diff options
author | Andrej Kozemcak <andrej.kozemcak@pantheon.tech> | 2019-01-11 07:45:19 +0100 |
---|---|---|
committer | Andrej Kozemcak <andrej.kozemcak@pantheon.tech> | 2019-01-11 07:46:46 +0100 |
commit | 8a72578cec9ffe5bf815e38918fd82b190f8af38 (patch) | |
tree | 38fc04ef4dab6431861119e63f4559d5ad59bd10 | |
parent | b70c4a3f70c08d93afb52ecb1bdd50a50feb1e1f (diff) |
Remove not supported openconfig yang modules.
Change-Id: I721def08356e64918424fdb889f545b64daeea88
Signed-off-by: Andrej Kozemcak <andrej.kozemcak@pantheon.tech>
123 files changed, 0 insertions, 56518 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-aaa-radius.yang b/src/plugins/yang/openconfig/openconfig-aaa-radius.yang deleted file mode 100644 index 8f82bd4..0000000 --- a/src/plugins/yang/openconfig/openconfig-aaa-radius.yang +++ /dev/null @@ -1,180 +0,0 @@ -submodule openconfig-aaa-radius { - - yang-version "1"; - - belongs-to "openconfig-aaa" { - prefix "oc-aaa"; - } - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-aaa-types { prefix oc-aaa-types; } - import openconfig-types { prefix oc-types; } - import openconfig-yang-types { prefix oc-yang; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - related to the RADIUS protocol for authentication, - authorization, and accounting."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2017-09-18" { - description - "Updated to use OpenConfig types modules"; - reference "0.3.0"; - } - - revision "2017-07-06" { - description - "Move to oc-inet types, add IETF attribution, add RADIUS - counters, changed password leaf names to indicate hashed"; - reference "0.2.0"; - } - - revision "2017-01-29" { - description - "Initial public release"; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - identity RADIUS { - base oc-aaa-types:AAA_SERVER_TYPE; - description - "Remote Authentication Dial In User Service (RADIUS) AAA - server"; - reference - "RFC 2865 - Remote Authentication Dial In User Service - (RADIUS)"; - } - - // typedef statements - - // grouping statements - - grouping aaa-radius-server-config { - description - "Configuration data for a RADIUS server"; - - leaf auth-port { - type oc-inet:port-number; - default 1812; - description - "Port number for authentication requests"; - } - - leaf acct-port { - type oc-inet:port-number; - default 1813; - description - "Port number for accounting requests"; - } - - leaf secret-key { - type oc-types:routing-password; - description - "The unencrypted shared key used between the authentication - server and the device."; - } - - leaf source-address { - type oc-inet:ip-address; - description - "Source IP address to use in messages to the RADIUS server"; - } - - leaf retransmit-attempts { - type uint8; - description - "Number of times the system may resend a request to the - RADIUS server when it is unresponsive"; - } - } - - grouping aaa-radius-server-state { - description - "Operational state data for a RADIUS server"; - - container counters { - description - "A collection of RADIUS related state objects."; - - leaf retried-access-requests { - type oc-yang:counter64; - description - "Retransmitted Access-Request messages."; - } - - leaf access-accepts { - type oc-yang:counter64; - description - "Received Access-Accept messages."; - } - - leaf access-rejects { - type oc-yang:counter64; - description - "Received Access-Reject messages."; - } - - leaf timeout-access-requests { - type oc-yang:counter64; - description - "Access-Request messages that have timed-out, - requiring retransmission."; - } - } - } - - grouping aaa-radius-server-top { - description - "Top-level grouping for RADIUS server data"; - - container radius { - description - "Top-level container for RADIUS server data"; - - container config { - description - "Configuration data for RADIUS servers"; - - uses aaa-radius-server-config; - } - - container state { - - config false; - - description - "Operational state data for RADIUS servers"; - - uses aaa-radius-server-config; - uses aaa-radius-server-state; - } - } - } - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-aaa-tacacs.yang b/src/plugins/yang/openconfig/openconfig-aaa-tacacs.yang deleted file mode 100644 index 21d0f4a..0000000 --- a/src/plugins/yang/openconfig/openconfig-aaa-tacacs.yang +++ /dev/null @@ -1,136 +0,0 @@ -submodule openconfig-aaa-tacacs { - - yang-version "1"; - - belongs-to "openconfig-aaa" { - prefix "oc-aaa"; - } - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-aaa-types { prefix oc-aaa-types; } - import openconfig-types { prefix oc-types; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - related to the TACACS+ protocol for authentication, - authorization, and accounting."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2017-09-18" { - description - "Updated to use OpenConfig types modules"; - reference "0.3.0"; - } - - revision "2017-07-06" { - description - "Move to oc-inet types, add IETF attribution, add RADIUS - counters, changed password leaf names to indicate hashed"; - reference "0.2.0"; - } - - revision "2017-01-29" { - description - "Initial public release"; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - identity TACACS { - base oc-aaa-types:AAA_SERVER_TYPE; - description - "Terminal Access Controller Access Control System (TACACS+) - AAA server"; - reference - "The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05) - RFC 1492 - An Access Control Protocol, Sometimes Called - TACACS"; - } - - // typedef statements - - // grouping statements - - grouping aaa-tacacs-server-config { - description - "Configuration data for a TACACS+ server"; - - leaf port { - type oc-inet:port-number; - default 49; - description - "The port number on which to contact the TACACS server"; - } - - leaf secret-key { - type oc-types:routing-password; - description - "The unencrypted shared key used between the authentication - server and the device."; - } - - leaf source-address { - type oc-inet:ip-address; - description - "Source IP address to use in messages to the TACACS server"; - } - } - - grouping aaa-tacacs-server-state { - description - "Operational state data for a TACACS+ server"; - } - - grouping aaa-tacacs-server-top { - description - "Top-level grouping for TACACS+ sever data"; - - container tacacs { - description - "Top-level container for TACACS+ server data"; - - container config { - description - "Configuration data for TACACS+ server"; - - uses aaa-tacacs-server-config; - } - - container state { - - config false; - - description - "Operational state data for TACACS+ server"; - - uses aaa-tacacs-server-config; - uses aaa-tacacs-server-state; - } - } - } - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-aaa-types.yang b/src/plugins/yang/openconfig/openconfig-aaa-types.yang deleted file mode 100644 index 41bd5d9..0000000 --- a/src/plugins/yang/openconfig/openconfig-aaa-types.yang +++ /dev/null @@ -1,162 +0,0 @@ -module openconfig-aaa-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/aaa/types"; - - prefix "oc-aaa-types"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines shared types for data related to AAA - (authentication, authorization, accounting)."; - - oc-ext:openconfig-version "0.4.0"; - - revision "2018-04-12" { - description - "Add when conditions, correct identities"; - reference "0.4.0"; - } - - revision "2017-09-18" { - description - "Updated to use OpenConfig types modules"; - reference "0.3.0"; - } - - revision "2017-07-06" { - description - "Move to oc-inet types, add IETF attribution, add RADIUS - counters, changed password leaf names to indicate hashed"; - reference "0.2.0"; - } - - revision "2017-01-29" { - description - "Initial public release"; - reference "0.1.0"; - } - - - // identity statements - - identity AAA_SERVER_TYPE { - description - "Base identity for types of AAA servers"; - } - - - identity SYSTEM_DEFINED_ROLES { - description - "Base identity for system_defined roles that can be assigned - to users."; - } - - identity SYSTEM_ROLE_ADMIN { - base SYSTEM_DEFINED_ROLES; - description - "Built-in role that allows the equivalent of superuser - permission for all configuration and operational commands - on the device."; - } - - identity AAA_ACCOUNTING_EVENT_TYPE { - description - "Base identity for specifying events types that should be - sent to AAA server for accounting"; - } - - identity AAA_ACCOUNTING_EVENT_COMMAND { - base AAA_ACCOUNTING_EVENT_TYPE; - description - "Specifies interactive command events for AAA accounting"; - } - - identity AAA_ACCOUNTING_EVENT_LOGIN { - base AAA_ACCOUNTING_EVENT_TYPE; - description - "Specifies login events for AAA accounting"; - } - - identity AAA_AUTHORIZATION_EVENT_TYPE { - description - "Base identity for specifying activities that should be - sent to AAA server for authorization"; - } - - identity AAA_AUTHORIZATION_EVENT_COMMAND { - base AAA_AUTHORIZATION_EVENT_TYPE; - description - "Specifies interactive command events for AAA authorization"; - } - - identity AAA_AUTHORIZATION_EVENT_CONFIG { - base AAA_AUTHORIZATION_EVENT_TYPE; - description - "Specifies configuration (e.g., EXEC) events for AAA - authorization"; - } - - identity AAA_METHOD_TYPE { - description - "Base identity to define well-known methods for AAA - operations"; - } - - identity TACACS_ALL { - base AAA_METHOD_TYPE; - description - "The group of all TACACS+ servers."; - } - - identity RADIUS_ALL { - base AAA_METHOD_TYPE; - description - "The group of all RADIUS servers."; - } - - identity LOCAL { - base AAA_METHOD_TYPE; - description - "Locally configured method for AAA operations."; - } - - - // typedef statements - - typedef crypt-password-type { - type string; - description - "A password that is hashed based on the hash algorithm - indicated by the prefix in the string. The string - takes the following form, based on the Unix crypt function: - - $<id>[$<param>=<value>(,<param>=<value>)*][$<salt>[$<hash>]] - - Common hash functions include: - - id | hash function - ---+--------------- - 1 | MD5 - 2a| Blowfish - 2y| Blowfish (correct handling of 8-bit chars) - 5 | SHA-256 - 6 | SHA-512 - - These may not all be supported by a target device."; - } - - -} diff --git a/src/plugins/yang/openconfig/openconfig-aaa.yang b/src/plugins/yang/openconfig/openconfig-aaa.yang deleted file mode 100644 index 18a00c5..0000000 --- a/src/plugins/yang/openconfig/openconfig-aaa.yang +++ /dev/null @@ -1,811 +0,0 @@ -module openconfig-aaa { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/aaa"; - - prefix "oc-aaa"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-aaa-types { prefix oc-aaa-types; } - - include openconfig-aaa-tacacs; - include openconfig-aaa-radius; - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - related to authorization, authentication, and accounting (AAA) - management. - - Portions of this model reuse data definitions or structure from - RFC 7317 - A YANG Data Model for System Management"; - - oc-ext:openconfig-version "0.4.0"; - - revision "2018-04-12" { - description - "Add when conditions, correct identities"; - reference "0.4.0"; - } - - revision "2017-09-18" { - description - "Updated to use OpenConfig types modules"; - reference "0.3.0"; - } - - revision "2017-07-06" { - description - "Move to oc-inet types, add IETF attribution, add RADIUS - counters, changed password leaf names to indicate hashed"; - reference "0.2.0"; - } - - revision "2017-01-29" { - description - "Initial public release"; - reference "0.1.0"; - } - - // identity statements - - // grouping statements - grouping aaa-servergroup-common-config { - description - "Configuration data for AAA server groups"; - - leaf name { - type string; - description - "Name for the server group"; - } - - leaf type { - type identityref { - base oc-aaa-types:AAA_SERVER_TYPE; - } - description - "AAA server type -- all servers in the group must be of this - type"; - } - } - - grouping aaa-servergroup-common-state { - description - "Operational state data for AAA server groups"; - - //TODO: add list of group members as opstate - } - - grouping aaa-servergroup-common-top { - description - "Top-level grouping for AAA server groups"; - - container server-groups { - description - "Enclosing container for AAA server groups"; - - list server-group { - key "name"; - description - "List of AAA server groups. All servers in a group - must have the same type as indicated by the server - type."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to configured name of the server group"; - } - - container config { - description - "Configuration data for each server group"; - - uses aaa-servergroup-common-config; - } - - container state { - config false; - - description - "Operational state data for each server group"; - - uses aaa-servergroup-common-config; - uses aaa-servergroup-common-state; - } - - uses aaa-server-top; - } - } - } - - grouping aaa-server-config { - description - "Common configuration data for AAA servers"; - - leaf name { - type string; - description - "Name assigned to the server"; - } - - - leaf address { - type oc-inet:ip-address; - description "Address of the authentication server"; - } - - leaf timeout { - type uint16; - units seconds; - description - "Set the timeout in seconds on responses from the AAA - server"; - } - } - - grouping aaa-server-state { - description - "Common operational state data for AAA servers"; - - leaf connection-opens { - type oc-yang:counter64; - description - "Number of new connection requests sent to the server, e.g. - socket open"; - } - - leaf connection-closes { - type oc-yang:counter64; - description - "Number of connection close requests sent to the server, e.g. - socket close"; - } - - leaf connection-aborts { - type oc-yang:counter64; - description - "Number of aborted connections to the server. These do - not include connections that are close gracefully."; - } - - leaf connection-failures { - type oc-yang:counter64; - description - "Number of connection failures to the server"; - } - - leaf connection-timeouts { - type oc-yang:counter64; - description - "Number of connection timeouts to the server"; - } - - leaf messages-sent { - type oc-yang:counter64; - description - "Number of messages sent to the server"; - } - - leaf messages-received { - type oc-yang:counter64; - description - "Number of messages received by the server"; - } - - leaf errors-received { - type oc-yang:counter64; - description - "Number of error messages received from the server"; - } - - } - - grouping aaa-server-top { - description - "Top-level grouping for list of AAA servers"; - - container servers { - description - "Enclosing container the list of servers"; - - list server { - key "address"; - description - "List of AAA servers"; - - leaf address { - type leafref { - path "../config/address"; - } - description - "Reference to the configured address of the AAA server"; - } - - container config { - description - "Configuration data "; - - uses aaa-server-config; - } - - container state { - config false; - - description - "Operational state data "; - - uses aaa-server-config; - uses aaa-server-state; - } - - uses aaa-tacacs-server-top { - when "../../config/type = 'oc-aaa-types:TACACS'"; - } - - uses aaa-radius-server-top { - when "../../config/type = 'oc-aaa-types:RADIUS'"; - } - } - } - } - - grouping aaa-admin-config { - description - "Configuration data for the system built-in - administrator / root user account"; - - leaf admin-password { - type string; - oc-ext:openconfig-hashed-value; - description - "The admin/root password, supplied as a cleartext string. - The system should hash and only store the password as a - hashed value."; - } - - leaf admin-password-hashed { - type oc-aaa-types:crypt-password-type; - description - "The admin/root password, supplied as a hashed value - using the notation described in the definition of the - crypt-password-type."; - } - } - - grouping aaa-admin-state { - description - "Operational state data for the root user"; - - leaf admin-username { - type string; - description - "Name of the administrator user account, e.g., admin, root, - etc."; - } - } - - grouping aaa-authentication-admin-top { - description - "Top-level grouping for root user configuration and state - data"; - - container admin-user { - description - "Top-level container for the system root or admin user - configuration and operational state"; - - container config { - description - "Configuration data for the root user account"; - - uses aaa-admin-config; - } - - container state { - config false; - - description - "Operational state data for the root user account"; - - uses aaa-admin-config; - uses aaa-admin-state; - } - } - } - grouping aaa-authentication-user-config { - description - "Configuration data for local users"; - - leaf username { - type string; - description - "Assigned username for this user"; - } - - leaf password { - type string; - oc-ext:openconfig-hashed-value; - description - "The user password, supplied as cleartext. The system - must hash the value and only store the hashed value."; - } - - leaf password-hashed { - type oc-aaa-types:crypt-password-type; - description - "The user password, supplied as a hashed value - using the notation described in the definition of the - crypt-password-type."; - } - - leaf ssh-key { - type string; - description - "SSH public key for the user (RSA or DSA)"; - } - - leaf role { - type union { - type string; - type identityref { - base oc-aaa-types:SYSTEM_DEFINED_ROLES; - } - } - description - "Role assigned to the user. The role may be supplied - as a string or a role defined by the SYSTEM_DEFINED_ROLES - identity."; - } - } - - grouping aaa-authentication-user-state { - description - "Operational state data for local users"; - } - - grouping aaa-authentication-user-top { - description - "Top-level grouping for local users"; - - container users { - description - "Enclosing container list of local users"; - - list user { - key "username"; - description - "List of local users on the system"; - - leaf username { - type leafref { - path "../config/username"; - } - description - "References the configured username for the user"; - } - - container config { - description - "Configuration data for local users"; - - uses aaa-authentication-user-config; - } - - container state { - config false; - - description - "Operational state data for local users"; - - uses aaa-authentication-user-config; - uses aaa-authentication-user-state; - } - } - - } - } - - grouping aaa-accounting-methods-common { - description - "Common definitions for accounting methods"; - - leaf-list accounting-method { - type union { - type identityref { - base oc-aaa-types:AAA_METHOD_TYPE; - } - type string; - //TODO: in YANG 1.1 this should be converted to a leafref to - //point to the server group name. - } - ordered-by user; - description - "An ordered list of methods used for AAA accounting for this - event type. The method is defined by the destination for - accounting data, which may be specified as the group of - all TACACS+/RADIUS servers, a defined server group, or - the local system."; - } - } - - - grouping aaa-accounting-events-config { - description - "Configuration data for AAA accounting events"; - - leaf event-type { - type identityref { - base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE; - } - description - "The type of activity to record at the AAA accounting - server"; - } - - leaf record { - type enumeration { - enum START_STOP { - description - "Send START record to the accounting server at the - beginning of the activity, and STOP record at the - end of the activity."; - } - enum STOP { - description - "Send STOP record to the accounting server when the - user activity completes"; - } - } - description - "Type of record to send to the accounting server for this - activity type"; - } - } - - grouping aaa-accounting-events-state { - description - "Operational state data for accounting events"; - } - - grouping aaa-accounting-events-top { - description - "Top-level grouping for accounting events"; - - container events { - description - "Enclosing container for defining handling of events - for accounting"; - - list event { - key "event-type"; - description - "List of events subject to accounting"; - - leaf event-type { - type leafref { - path "../config/event-type"; - } - description - "Reference to the event-type being logged at the - accounting server"; - } - - container config { - description - "Configuration data for accounting events"; - - uses aaa-accounting-events-config; - } - - container state { - config false; - - description - "Operational state data for accounting events"; - - uses aaa-accounting-events-config; - uses aaa-accounting-events-state; - } - } - } - } - - grouping aaa-accounting-config { - description - "Configuration data for event accounting"; - - uses aaa-accounting-methods-common; - - } - - grouping aaa-accounting-state { - description - "Operational state data for event accounting services"; - } - - grouping aaa-accounting-top { - description - "Top-level grouping for user activity accounting"; - - container accounting { - description - "Top-level container for AAA accounting"; - - container config { - description - "Configuration data for user activity accounting."; - - uses aaa-accounting-config; - } - - container state { - config false; - - description - "Operational state data for user accounting."; - - uses aaa-accounting-config; - uses aaa-accounting-state; - } - - uses aaa-accounting-events-top; - - } - } - - grouping aaa-authorization-methods-config { - description - "Common definitions for authorization methods for global - and per-event type"; - - leaf-list authorization-method { - type union { - type identityref { - base oc-aaa-types:AAA_METHOD_TYPE; - } - type string; - } - ordered-by user; - description - "Ordered list of methods for authorizing commands. The first - method that provides a response (positive or negative) should - be used. The list may contain a well-defined method such - as the set of all TACACS or RADIUS servers, or the name of - a defined AAA server group. The system must validate - that the named server group exists."; - } - } - - grouping aaa-authorization-events-config { - description - "Configuration data for AAA authorization events"; - - leaf event-type { - type identityref { - base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE; - } - description - "The type of event to record at the AAA authorization - server"; - } - } - - grouping aaa-authorization-events-state { - description - "Operational state data for AAA authorization events"; - } - - grouping aaa-authorization-events-top { - description - "Top-level grouping for authorization events"; - - container events { - description - "Enclosing container for the set of events subject - to authorization"; - - list event { - key "event-type"; - description - "List of events subject to AAA authorization"; - - leaf event-type { - type leafref { - path "../config/event-type"; - } - description - "Reference to the event-type list key"; - } - - container config { - description - "Configuration data for each authorized event"; - - uses aaa-authorization-events-config; - } - - container state { - config false; - - description - "Operational state data for each authorized activity"; - - uses aaa-authorization-events-config; - uses aaa-authorization-events-state; - } - } - } - } - - grouping aaa-authorization-config { - description - "Configuration data for AAA authorization"; - - uses aaa-authorization-methods-config; - } - - grouping aaa-authorization-state { - description - "Operational state data for AAA authorization"; - } - - grouping aaa-authorization-top { - description - "Top-level grouping for AAA authorization"; - - container authorization { - description - "Top-level container for AAA authorization configuration - and operational state data"; - - container config { - description - "Configuration data for authorization based on AAA - methods"; - - uses aaa-authorization-config; - } - - container state { - config false; - - description - "Operational state data for authorization based on AAA"; - - uses aaa-authorization-config; - uses aaa-authorization-state; - } - - uses aaa-authorization-events-top; - - } - } - - grouping aaa-authentication-config { - description - "Configuration data for global authentication"; - - leaf-list authentication-method { - type union { - type identityref { - base oc-aaa-types:AAA_METHOD_TYPE; - } - type string; - //TODO: string should be a leafref to a defined - //server group. this will be possible in YANG 1.1 - //type leafref { - //path "/aaa/server-groups/server-group/config/name"; - //} - } - ordered-by user; - description - "Ordered list of authentication methods for users. This - can be either a reference to a server group, or a well- - defined designation in the AAA_METHOD_TYPE identity. If - authentication fails with one method, the next defined - method is tried -- failure of all methods results in the - user being denied access."; - } - } - - grouping aaa-authentication-state { - description - "Operational state data for global authentication"; - } - - grouping aaa-authentication-top { - description - "Top-level grouping for top-level authentication"; - - container authentication { - description - "Top-level container for global authentication data"; - - container config { - description - "Configuration data for global authentication services"; - - uses aaa-authentication-config; - } - - container state { - config false; - - description - "Operational state data for global authentication - services"; - - uses aaa-authentication-config; - uses aaa-authentication-state; - } - - uses aaa-authentication-admin-top; - uses aaa-authentication-user-top; - } - } - - grouping aaa-config { - description - "Configuration data for top level AAA"; - } - - grouping aaa-state { - description - "Operational state data for top level AAA"; - } - - grouping aaa-top { - description - "Top-level grouping for AAA services"; - - container aaa { - description - "Top-level container for AAA services"; - - container config { - description - "Configuration data for top level AAA services"; - - uses aaa-config; - } - - container state { - config false; - - description - "Operational state data for top level AAA services "; - - uses aaa-config; - uses aaa-state; - } - - uses aaa-authentication-top; - uses aaa-authorization-top; - uses aaa-accounting-top; - uses aaa-servergroup-common-top; - - } - } - - - - // data definition statements - - -} diff --git a/src/plugins/yang/openconfig/openconfig-access-points.yang b/src/plugins/yang/openconfig/openconfig-access-points.yang deleted file mode 100644 index 7665814..0000000 --- a/src/plugins/yang/openconfig/openconfig-access-points.yang +++ /dev/null @@ -1,168 +0,0 @@ -module openconfig-access-points { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/wifi/access-points"; - - // Assign this module a prefix to be used by other modules, when imported. - prefix "access-points"; - - // Imports - import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-wifi-phy { prefix wifi-phy; } - import openconfig-wifi-mac { prefix wifi-mac; } - import openconfig-system { prefix oc-sys; } - - // Meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines the top level WiFi Configurations for a list of - Access Points."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-02-14" { - description - "Initial version"; - reference "0.1.0"; - } - - grouping assigned-ap-managers-config { - description - "AP Manager(s) an AP may join. If cloud manager, this will be - the cloud instance(s). This is often referred to as 'Controller'."; - - leaf id { - type string; - description - "The unique reference for the AP manager described in the list entry."; - } - - leaf fqdn { - type oc-inet:domain-name; - description - "The FQDN of a manager this AP is assigned to. The list should be - ordered, according to priority. eg Primary first, - Secondary second, Tertiary third etc."; - } - - leaf ap-manager-ipv4-address { - type oc-inet:ipv4-address; - description - "IPv4 address of a manager for this AP. The list should be - ordered, according to priority. eg. Primary first, Secondary second, - Tertiary third etc."; - } - - leaf-list ap-manager-ipv6-address { - type oc-inet:ipv6-address; - description - "IPv6 address of a manager for this AP. The list should be - ordered, according to priority. eg. Primary first, Secondary second, - Tertiary third etc."; - } - } - - grouping assigned-ap-managers-state { - description - "Manager(s) an AP may join. If cloud manager, this will be - the cloud instance(s)."; - - leaf joined { - type boolean; - description - "True only if this AP is currently joined to a manager. If this AP - is configured to join manager(s), however is not currently joined - to any manager, this MUST return False."; - } - } - - grouping manager-ap-parameters-top { - description - "Top-level grouping for assigning AP's to manager(s)."; - - container assigned-ap-managers { - description - "Wireless manager(s) this AP is assigned to. eg. Primary - Secondary, Tertiary etc."; - - list ap-manager { - key "id"; - description - "Manager(s) this AP is assinged to, referenced by id."; - - leaf id { - type leafref { - path "../config/id"; - } - description - "id serves as a reference point to the [1-n] manager(s) this AP - is assigned to."; - } - - container config { - description - "Config. container for assigning APs to managers."; - - uses assigned-ap-managers-config; - } - - container state { - config false; - description - "State container for APs assigned to managers."; - - uses assigned-ap-managers-config; - uses assigned-ap-managers-state; - } - } - } - } - - grouping access-points-top { - description - "Top-level grouping for AP configuration & state data."; - - container access-points { - description - "Top most container for configuration and state data for Access - Points."; - - list access-point { - key "hostname"; - description - "Configuration and state data for the access point referenced in the - list entry."; - - leaf hostname { - type oc-inet:domain-name; - description - "AP FQDN"; - } - - uses wifi-phy:radio-top; - uses wifi-mac:ssid-top; - uses wifi-mac:bssid-counters-top; - uses oc-sys:system-top; - uses manager-ap-parameters-top; - } - } - } - uses access-points-top; - - // hostname is set using openconfig-wifi-aps model. - deviation /oc-sys:system/oc-sys:config/oc-sys:hostname { - deviate not-supported; - } - - deviation /oc-sys:system/oc-sys:state/oc-sys:hostname { - deviate not-supported; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-acl.yang b/src/plugins/yang/openconfig/openconfig-acl.yang deleted file mode 100644 index aa069cd..0000000 --- a/src/plugins/yang/openconfig/openconfig-acl.yang +++ /dev/null @@ -1,837 +0,0 @@ -module openconfig-acl { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/acl"; - - prefix "oc-acl"; - - import openconfig-packet-match { prefix oc-match; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state - data for network access control lists (i.e., filters, rules, - etc.). ACLs are organized into ACL sets, with each set - containing one or more ACL entries. ACL sets are identified - by a unique name, while each entry within a set is assigned - a sequence-id that determines the order in which the ACL - rules are applied to a packet. Note that ACLs are evaluated - in ascending order based on the sequence-id (low to high). - - Individual ACL rules specify match criteria based on fields in - the packet, along with an action that defines how matching - packets should be handled. Entries have a type that indicates - the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - - oc-ext:openconfig-version "1.0.1"; - - revision "2018-04-24" { - description - "Clarified order of ACL evaluation"; - reference "1.0.1"; - } - - revision "2017-05-26" { - description - "Separated ACL entries by type"; - reference "1.0.0"; - } - - revision "2016-08-08" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - revision "2016-01-22" { - description - "Initial revision"; - reference "TBD"; - } - - - identity ACL_TYPE { - description - "Base identity for types of ACL sets"; - } - - identity ACL_IPV4 { - base ACL_TYPE; - description - "IP-layer ACLs with IPv4 addresses"; - } - - identity ACL_IPV6 { - base ACL_TYPE; - description - "IP-layer ACLs with IPv6 addresses"; - } - - identity ACL_L2 { - base ACL_TYPE; - description - "MAC-layer ACLs"; - } - - identity ACL_MIXED { - base ACL_TYPE; - description - "Mixed-mode ACL that specifies L2 and L3 protocol - fields. This ACL type is not implemented by many - routing/switching devices."; - } - - // ACL action type - - identity FORWARDING_ACTION { - description - "Base identity for actions in the forwarding category"; - } - - identity ACCEPT { - base FORWARDING_ACTION; - description - "Accept the packet"; - } - - identity DROP { - base FORWARDING_ACTION; - description - "Drop packet without sending any ICMP error message"; - } - - identity REJECT { - base FORWARDING_ACTION; - description - "Drop the packet and send an ICMP error message to the source"; - } - - identity LOG_ACTION { - description - "Base identity for defining the destination for logging - actions"; - } - - identity LOG_SYSLOG { - base LOG_ACTION; - description - "Log the packet in Syslog"; - } - - identity LOG_NONE { - base LOG_ACTION; - description - "No logging"; - } - - identity ACL_COUNTER_CAPABILITY { - description - "Base identity for system to indicate how it is able to report - counters"; - } - - identity INTERFACE_ONLY { - base ACL_COUNTER_CAPABILITY; - description - "ACL counters are available and reported only per interface"; - } - - identity AGGREGATE_ONLY { - base ACL_COUNTER_CAPABILITY; - description - "ACL counters are aggregated over all interfaces, and reported - only per ACL entry"; - } - - identity INTERFACE_AGGREGATE { - base ACL_COUNTER_CAPABILITY; - description - "ACL counters are reported per interface, and also aggregated - and reported per ACL entry."; - } - - // grouping statements - - // input interface - grouping input-interface-config { - description - "Config of interface"; - - } - - grouping input-interface-state { - description - "State information of interface"; - } - - grouping input-interface-top { - description - "Input interface top level container"; - - container input-interface { - description - "Input interface container"; - - container config { - description - "Config data"; - uses input-interface-config; - } - - container state { - config false; - description - "State information"; - uses input-interface-config; - uses input-interface-state; - } - - uses oc-if:interface-ref; - - } - } - - // Action Type - grouping action-config { - description - "Config of action type"; - - - leaf forwarding-action { - type identityref { - base FORWARDING_ACTION; - } - mandatory true; - description - "Specifies the forwarding action. One forwarding action - must be specified for each ACL entry"; - } - - leaf log-action { - type identityref { - base LOG_ACTION; - } - default LOG_NONE; - description - "Specifies the log action and destination for - matched packets. The default is not to log the - packet."; - } - - - } - - grouping action-state { - description - "State information of action type"; - - } - - grouping action-top { - description - "ACL action type top level container"; - - container actions { - description - "Enclosing container for list of ACL actions associated - with an entry"; - - container config { - description - "Config data for ACL actions"; - uses action-config; - } - - container state { - config false; - description - "State information for ACL actions"; - uses action-config; - uses action-state; - } - } - } - - grouping acl-counters-state { - description - "Common grouping for ACL counters"; - - leaf matched-packets { - type oc-yang:counter64; - description - "Count of the number of packets matching the current ACL - entry. - - An implementation should provide this counter on a - per-interface per-ACL-entry if possible. - - If an implementation only supports ACL counters per entry - (i.e., not broken out per interface), then the value - should be equal to the aggregate count across all interfaces. - - An implementation that provides counters per entry per - interface is not required to also provide an aggregate count, - e.g., per entry -- the user is expected to be able implement - the required aggregation if such a count is needed."; - } - - leaf matched-octets { - type oc-yang:counter64; - description - "Count of the number of octets (bytes) matching the current - ACL entry. - - An implementation should provide this counter on a - per-interface per-ACL-entry if possible. - - If an implementation only supports ACL counters per entry - (i.e., not broken out per interface), then the value - should be equal to the aggregate count across all interfaces. - - An implementation that provides counters per entry per - interface is not required to also provide an aggregate count, - e.g., per entry -- the user is expected to be able implement - the required aggregation if such a count is needed."; - } - - } - - // Access List Entries - grouping access-list-entries-config { - description - "Access List Entries (ACE) config."; - - leaf sequence-id { - type uint32; - description - "The sequence id determines the order in which ACL entries - are applied. The sequence id must be unique for each entry - in an ACL set. Target devices should apply the ACL entry - rules in ascending order determined by sequence id (low to - high), rather than the relying only on order in the list."; - } - - leaf description { - type string; - description - "A user-defined description, or comment, for this Access List - Entry."; - } - - } - - grouping access-list-entries-state { - description - "Access List Entries state."; - - uses acl-counters-state; - - } - - grouping access-list-entries-top { - description - "Access list entries to level container"; - - container acl-entries { - description - "Access list entries container"; - - list acl-entry { - key "sequence-id"; - description - "List of ACL entries comprising an ACL set"; - - leaf sequence-id { - type leafref { - path "../config/sequence-id"; - } - description - "references the list key"; - } - - container config { - description - "Access list entries config"; - uses access-list-entries-config; - } - - container state { - config false; - description - "State information for ACL entries"; - uses access-list-entries-config; - uses access-list-entries-state; - } - - uses oc-match:ethernet-header-top { - when "../../config/type='ACL_L2'" { - description - "MAC-layer fields are valid when the ACL type is L2"; - } - } - uses oc-match:ipv4-protocol-fields-top { - when "../../config/type='ACL_IPV4'" { - description - "IPv4-layer fields are valid when the ACL type is - IPv4"; - } - } - uses oc-match:ipv6-protocol-fields-top { - when "../../config/type='ACL_IPV6'" { - description - "IPv6-layer fields are valid when the ACL type is - IPv6"; - } - } - uses oc-match:transport-fields-top { - when "../../config/type='ACL_IPV6' or " + - "../../config/type='ACL_IPV4'" { - description - "Transport-layer fields are valid when specifying - L3 ACL types"; - } - } - uses input-interface-top; - - uses action-top; - } - } - } - - grouping acl-set-config { - description - "Access Control List config"; - - leaf name { - type string; - description - "The name of the access-list set"; - } - - leaf type { - type identityref { - base ACL_TYPE; - } - description - "The type determines the fields allowed in the ACL entries - belonging to the ACL set (e.g., IPv4, IPv6, etc.)"; - } - - leaf description { - type string; - description - "Description, or comment, for the ACL set"; - } - - } - - grouping acl-set-state { - description - "Access Control List state"; - } - - grouping acl-set-top { - description - "Access list entries variables top level container"; - - container acl-sets { - description - "Access list entries variables enclosing container"; - - list acl-set { - key "name type"; - description - "List of ACL sets, each comprising of a list of ACL - entries"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the name list key"; - } - - leaf type { - type leafref { - path "../config/type"; - } - description - "Reference to the type list key"; - } - - container config { - description - "Access list config"; - uses acl-set-config; - } - - container state { - config false; - description - "Access list state information"; - uses acl-set-config; - uses acl-set-state; - } - uses access-list-entries-top; - } - } - } - - grouping interface-acl-entries-config { - description - "Configuration data for per-interface ACLs"; - - } - - grouping interface-acl-entries-state { - description - "Operational state data for per-interface ACL entries"; - - leaf sequence-id { - type leafref { - path "/acl/acl-sets/" + - "acl-set[name=current()/../../../../set-name]" + - "[type=current()/../../../../type]/" + - "acl-entries/acl-entry/sequence-id"; - } - description - "Reference to an entry in the ACL set applied to an - interface"; - } - - uses acl-counters-state; - - } - - grouping interface-acl-entries-top { - description - "Top-level grouping for per-interface ACL entries"; - - container acl-entries { - config false; - description - "Enclosing container for list of references to ACLs"; - - list acl-entry { - key "sequence-id"; - description - "List of ACL entries assigned to an interface"; - - leaf sequence-id { - type leafref { - path "../state/sequence-id"; - } - description - "Reference to per-interface acl entry key"; - } - - // no config container since the enclosing container is - // read-only - - container state { - - config false; - - description - "Operational state data for per-interface ACL entries"; - - uses interface-acl-entries-config; - uses interface-acl-entries-state; - } - } - } - } - - grouping interface-ingress-acl-config { - description - "Configuration data for per-interface ingress ACLs"; - - leaf set-name { - type leafref { - path "../../../../../../acl-sets/acl-set/config/name"; - } - description - "Reference to the ACL set name applied on ingress"; - } - - leaf type { - type leafref { - path "../../../../../../acl-sets/acl-set[name=current()/../set-name]" + - "/config/type"; - } - description - "Reference to the ACL set type applied on ingress"; - } - } - - grouping interface-ingress-acl-state { - description - "Operational state data for the per-interface ingress ACL"; - } - - grouping interface-ingress-acl-top { - description - "Top-level grouping for per-interface ingress ACL data"; - - container ingress-acl-sets { - description - "Enclosing container the list of ingress ACLs on the - interface"; - - list ingress-acl-set { - key "set-name type"; - description - "List of ingress ACLs on the interface"; - - leaf set-name { - type leafref { - path "../config/set-name"; - } - description - "Reference to set name list key"; - } - - leaf type { - type leafref { - path "../config/type"; - } - description - "Reference to type list key"; - } - - container config { - description - "Configuration data "; - - uses interface-ingress-acl-config; - } - - container state { - - config false; - - description - "Operational state data for interface ingress ACLs"; - - uses interface-ingress-acl-config; - uses interface-ingress-acl-state; - } - - uses interface-acl-entries-top; - } - } - } - - grouping interface-egress-acl-config { - description - "Configuration data for per-interface egress ACLs"; - - leaf set-name { - type leafref { - path "../../../../../../acl-sets/acl-set/config/name"; - } - description - "Reference to the ACL set name applied on egress"; - } - - leaf type { - type leafref { - path "../../../../../../acl-sets/acl-set[name=current()/../set-name]" + - "/config/type"; - } - description - "Reference to the ACL set type applied on egress."; - } - } - - grouping interface-egress-acl-state { - description - "Operational state data for the per-interface egress ACL"; - } - - grouping interface-egress-acl-top { - description - "Top-level grouping for per-interface egress ACL data"; - - container egress-acl-sets { - description - "Enclosing container the list of egress ACLs on the - interface"; - - list egress-acl-set { - key "set-name type"; - description - "List of egress ACLs on the interface"; - - leaf set-name { - type leafref { - path "../config/set-name"; - } - description - "Reference to set name list key"; - } - - leaf type { - type leafref { - path "../config/type"; - } - description - "Reference to type list key"; - } - - container config { - description - "Configuration data "; - - uses interface-egress-acl-config; - } - - container state { - - config false; - - description - "Operational state data for interface egress ACLs"; - - uses interface-egress-acl-config; - uses interface-egress-acl-state; - } - - uses interface-acl-entries-top; - } - } - } - - grouping acl-interfaces-config { - description - "Configuration data for interface references"; - - leaf id { - type oc-if:interface-id; - description - "User-defined identifier for the interface -- a common - convention could be '<if name>.<subif index>'"; - } - } - - grouping acl-interfaces-state { - description - "Operational state data for interface references"; - } - - grouping acl-interfaces-top { - description - "Top-level grouping for interface-specific ACL data"; - - container interfaces { - description - "Enclosing container for the list of interfaces on which - ACLs are set"; - - list interface { - key "id"; - description - "List of interfaces on which ACLs are set"; - - leaf id { - type leafref { - path "../config/id"; - } - description - "Reference to the interface id list key"; - } - - container config { - description - "Configuration for ACL per-interface data"; - - uses acl-interfaces-config; - } - - container state { - - config false; - - description - "Operational state for ACL per-interface data"; - - uses acl-interfaces-config; - uses acl-interfaces-state; - } - - uses oc-if:interface-ref; - uses interface-ingress-acl-top; - uses interface-egress-acl-top; - } - } - } - - grouping acl-config { - description - "Global configuration data for ACLs"; - } - - grouping acl-state { - description - "Global operational state data for ACLs"; - - leaf counter-capability { - type identityref { - base ACL_COUNTER_CAPABILITY; - } - description - "System reported indication of how ACL counters are reported - by the target"; - } - } - grouping acl-top { - description - "Top level grouping for ACL data and structure"; - - container acl { - description - "Top level enclosing container for ACL model config - and operational state data"; - - container config { - description - "Global config data for ACLs"; - - uses acl-config; - } - - container state { - - config false; - - description - "Global operational state data for ACLs"; - - uses acl-config; - uses acl-state; - } - - uses acl-set-top; - uses acl-interfaces-top; - } - } - - // data definition statements - uses acl-top; - - // augment statements - - -} diff --git a/src/plugins/yang/openconfig/openconfig-aft-common.yang b/src/plugins/yang/openconfig/openconfig-aft-common.yang deleted file mode 100644 index c2b884f..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft-common.yang +++ /dev/null @@ -1,385 +0,0 @@ -submodule openconfig-aft-common { - belongs-to "openconfig-aft" { - prefix "oc-aft"; - } - - import openconfig-interfaces { prefix "oc-if"; } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-yang-types { prefix "oc-yang"; } - import openconfig-inet-types { prefix "oc-inet"; } - import openconfig-mpls-types { prefix "oc-mplst"; } - import openconfig-policy-types { prefix "oc-pol-types"; } - import openconfig-aft-types { prefix "oc-aftt"; } - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Submodule containing definitions of groupings that are re-used - across multiple contexts within the AFT model."; - - oc-ext:openconfig-version "0.3.1"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.3.1"; - } - - revision 2017-05-10 { - description - "Refactor to provide concretised per-AF schemas per AFT."; - reference "0.3.0"; - } - - grouping aft-nhop-structural { - description - "Structural grouping describing a next-hop entry."; - - container next-hops { - description - "The list of next-hops that are to be used for entry within - the AFT table. The structure of each next-hop is address - family independent, such that it is possible to resolve fully - how the next-hop is treated. For example: - - - Where ingress IPv4 unicast packets are to be forwarded via - an MPLS LSP, the next-hop list should indicate the MPLS - label stack that is used to the next-hop. - - Where ingress MPLS labelled packets are to be forwarded to - an IPv6 nexthop (for example, a CE within a VPN, then the - popped label stack, and IPv6 next-hop address should be - indicated)."; - - list next-hop { - key "index"; - - description - "A next-hop associated with the forwarding instance."; - - leaf index { - type leafref { - path "../config/index"; - } - description - "A unique index identifying the next-hop entry for the - AFT entry"; - - } - - container config { - description - "Configuration parameters relating to the AFT next-hop - entry"; - - uses aft-common-entry-nexthop-config; - } - - container state { - config false; - description - "Operational state parameters relating to the AFT - next-hop entry"; - - uses aft-common-entry-nexthop-config; - uses aft-common-entry-nexthop-state; - } - - uses oc-if:interface-ref; - } - } - } - - grouping aft-common-entry-state { - description - "Operational state parameters relating to a forwarding entry"; - - leaf packets-forwarded { - type oc-yang:counter64; - description - "The number of packets which have matched, and been forwarded, - based on the AFT entry."; - } - - leaf octets-forwarded { - type oc-yang:counter64; - description - "The number of octets which have matched, and been forwarded, - based on the AFT entry"; - } - - // We are at $afi/$entry/state/next-hop-group - leaf next-hop-group { - type leafref { - path "../../../../next-hop-groups/next-hop-group/state/id"; - } - description - "A reference to the next-hop-group that is in use for the entry - within the AFT. Traffic is distributed across the set of next-hops - within the next-hop group according to the weight."; - } - } - - grouping aft-common-entry-nexthop-config { - description - "Configuration parameters relating to a next-hop entry for a AFT - entry"; - - leaf index { - type uint64; - description - "A unique entry for the next-hop."; - } - } - - grouping aft-common-entry-nexthop-state { - description - "Parameters relating to a next-hop."; - - leaf ip-address { - type oc-inet:ip-address; - description - "The IP address of the next-hop system."; - } - - leaf mac-address { - type oc-yang:mac-address; - description - "The MAC address of the next-hop if resolved by the local - network instance."; - } - - leaf-list pushed-mpls-label-stack { - type oc-mplst:mpls-label; - ordered-by user; - description - "The MPLS label stack imposed when forwarding packets to the - next-hop - - the stack is encoded as a leaf list whereby the order of the - entries is such that the first entry in the list is the - label at the bottom of the stack to be pushed. - - To this end, a packet which is to forwarded to a device using - a service label of 42, and a transport label of 8072 will be - represented with a label stack list of [42, 8072]. - - The MPLS label stack list is ordered by the user, such that no - system re-ordering of leaves is permitted by the system. - - A swap operation is reflected by entries in the - popped-mpls-label-stack and pushed-mpls-label-stack nodes."; - - } - - leaf encapsulate-header { - type oc-aftt:encapsulation-header-type; - description - "When forwarding a packet to the specified next-hop the local - system performs an encapsulation of the packet - adding the - specified header type."; - } - - leaf origin-protocol { - type identityref { - base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; - } - description - "The protocol from which the AFT entry was learned."; - } - } - - grouping aft-common-ip-state { - description - "Common parameters across IP address families"; - - leaf decapsulate-header { - type oc-aftt:encapsulation-header-type; - description - "When forwarding a packet to the specified next-hop, the local - system performs a decapsulation of the packet - removing the - specified header type. In the case that no next-hop is - specified, the packet header is removed, and a subsequent - forwarding lookup is performed on the packet encapsulated - within the header, matched within the relevant AFT within the - specified network-instance."; - } - } - - grouping aft-next-hop-groups-structural { - description - "Logical grouping for groups of next-hops."; - - container next-hop-groups { - description - "Surrounding container for groups of next-hops."; - - list next-hop-group { - key "id"; - - description - "An individual set of next-hops grouped into a common group. - Each entry within an abstract forwarding table points to a - next-hop-group. Entries in the next-hop-group are forwarded to - according to the weights specified for each next-hop group. - - If an entry within the next-hop group becomes unusable, for - example due to an interface failure, the remaining entries - are used until all entries become unusable - at which point - the backup next-hop-group (if specified) is used."; - - leaf id { - description - "A reference to a unique identifier for the next-hop-group."; - - type leafref { - path "../config/id"; - } - } - - container config { - description - "Configuration parameters related to the next-hop-group."; - uses aft-nhg-config; - } - - container state { - config false; - description - "Operational state parameters relating to next-hop-groups."; - uses aft-nhg-config; - uses aft-nhg-state; - } - - container next-hops { - description - "Surrounding container for the list of next-hops within - the next-hop-group."; - - list next-hop { - key "index"; - - description - "An individual next-hop within the next-hop-group. Each - next-hop is a reference to an entry within the next-hop - list."; - - leaf index { - description - "A reference to the index for the next-hop within the - the next-hop-group."; - type leafref { - path "../config/index"; - } - } - - container config { - description - "Configuration parameters related to a next-hop within - the next-hop-group."; - uses aft-nhg-nh-config; - } - - container state { - config false; - description - "Operational state parameters related to a next-hop - within the next-hop-group."; - uses aft-nhg-nh-config; - uses aft-nhg-nh-state; - } - } - } - } - } - } - - grouping aft-nhg-config { - description - "Configuration parameters related to a next-hop-group."; - - leaf id { - type uint64; - description - "A unique identifier for the next-hop-group. This index - is not expected to be consistent across reboots, or - reprogramming of the next-hop-group. When updating - a next-hop-group, if the group is removed by the system - or assigned an alternate identifier, the system should - send telemetry notifications deleting the previous - identifier. If the identifier of the next-hop-group - is changed, all AFT entries that reference it must - also be updated."; - } - } - - grouping aft-nhg-state { - description - "Operational state parameters related to a next-hop-group."; - - leaf color { - type uint64; - description - - "An arbitrary colour that is used as an identifier for the next-hop - group. Some next-hop resolutions may utilise the colour to select - the particular next-hop-group that a routing entry should be resolved - to. In this case, next-hop-group selection may be based on colour - matches rather than the protocol specified next-hop. - - Regardless of whether the next-hop-group's specified colour is - used to select an AFT's active forwarding entry, the next-hop-group - referenced by an entry should be the currently active value. - - Next-hop-groups that are installed on the system through a protocol - that allows injection of such entries (e.g., BGP using the SR-TE - Policy SAFI, or gRPC-based RIB programming) should have the colour - specified in the injecting protocol within this leaf."; - } - - leaf backup-next-hop-group { - // We are at afts/next-hop-groups/next-hop-group/config/backup-next-hop-group - type leafref { - path "../../../next-hop-group/state/id"; - } - description - "The backup next-hop-group for the current group. When all - entries within the next-hop group become unusable, the backup - next-hop group is used if specified."; - } - } - - grouping aft-nhg-nh-config { - description - "Configuration parameters relating to an individual next-hop within - a next-hop-group."; - - leaf index { - type leafref { - // We are at afts/next-hop-groups/next-hop-group/next-hops/next-hop/config/id - path "../../../../../../next-hops/next-hop/config/index"; - } - description - "A reference to the identifier for the next-hop to which - the entry in the next-hop group corresponds."; - } - } - - grouping aft-nhg-nh-state { - description - "Operational state parameters relating to an individual next-hop - within the next-hop-group."; - - leaf weight { - type uint64; - description - "The weight applied to the next-hop within the group. Traffic - is balanced across the next-hops within the group in the - proportion of weight/(sum of weights of the next-hops within - the next-hop group)."; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-aft-ethernet.yang b/src/plugins/yang/openconfig/openconfig-aft-ethernet.yang deleted file mode 100644 index 714a059..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft-ethernet.yang +++ /dev/null @@ -1,93 +0,0 @@ -submodule openconfig-aft-ethernet { - belongs-to "openconfig-aft" { - prefix "oc-aft"; - } - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-yang-types { prefix "oc-yang"; } - - // Include common cross-AFT groupings from the common submodule. - include openconfig-aft-common; - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Submodule containing definitions of groupings for the abstract - forwarding tables for Ethernet."; - - oc-ext:openconfig-version "0.3.1"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.3.1"; - } - - revision 2017-05-10 { - description - "Refactor to provide concretised per-AF schemas per AFT."; - reference "0.3.0"; - } - - grouping aft-ethernet-structural { - description - "Structural grouping defining the schema for the Ethernet - abstract forwarding table."; - - list mac-entry { - key "mac-address"; - - description - "List of the Ethernet entries within the abstract - forwarding table. This list is keyed by the outer MAC address - of the Ethernet frame."; - - leaf mac-address { - type leafref { - path "../config/mac-address"; - } - description - "Reference to the outer MAC address matched by the - entry."; - } - - container config { - description - "Configuration parameters for the Ethernet AFT entry."; - uses aft-ethernet-entry-config; - } - - container state { - config false; - description - "Operational state parameters for the Ethernet AFT - entry."; - uses aft-ethernet-entry-config; - uses aft-ethernet-entry-state; - } - } - } - - grouping aft-ethernet-entry-config { - description - "Configuration parameters for the Ethernet AFT entry."; - - leaf mac-address { - type oc-yang:mac-address; - description - "The outer MAC address of the Ethernet frame that must - be matched for the AFT entry to be utilised."; - } - } - - grouping aft-ethernet-entry-state { - description - "Operational state parameters for the Ethernet AFT entry."; - uses aft-common-entry-state; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-aft-ipv4.yang b/src/plugins/yang/openconfig/openconfig-aft-ipv4.yang deleted file mode 100644 index 20f8992..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft-ipv4.yang +++ /dev/null @@ -1,94 +0,0 @@ -submodule openconfig-aft-ipv4 { - belongs-to "openconfig-aft" { - prefix "oc-aft"; - } - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-inet-types { prefix "oc-inet"; } - - // Include common cross-AFT groupings from the common submodule. - include openconfig-aft-common; - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Submodule containing definitions of groupings for the abstract - forwarding tables for IPv4."; - - oc-ext:openconfig-version "0.3.1"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.3.1"; - } - - revision 2017-05-10 { - description - "Refactor to provide concretised per-AF schemas per AFT."; - reference "0.3.0"; - } - - grouping aft-ipv4-unicast-structural { - description - "Structural grouping defining the schema for the IPv4 unicast - abstract forwarding table."; - - list ipv4-entry { - key "prefix"; - - description - "List of the IPv4 unicast entries within the abstract - forwarding table. This list is keyed by the destination IPv4 - prefix."; - - leaf prefix { - type leafref { - path "../config/prefix"; - } - description - "Reference to the IPv4 unicast destination prefix which - must be matched to utilise the AFT entry."; - } - - container config { - description - "Configuration parameters for the IPv4 unicast AFT entry."; - uses aft-ipv4-unicast-entry-config; - } - - container state { - config false; - description - "Operational state parameters for the IPv4 unicast AFT - entry."; - uses aft-ipv4-unicast-entry-config; - uses aft-ipv4-unicast-entry-state; - } - } - } - - grouping aft-ipv4-unicast-entry-config { - description - "Configuration parameters for the IPv4 unicast entry."; - - leaf prefix { - type oc-inet:ipv4-prefix; - description - "The IPv4 destination prefix that should be matched to - utilise the AFT entry."; - } - } - - grouping aft-ipv4-unicast-entry-state { - description - "Operational state parameters for the IPv4 unicast entry."; - uses aft-common-entry-state; - uses aft-common-ip-state; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-aft-ipv6.yang b/src/plugins/yang/openconfig/openconfig-aft-ipv6.yang deleted file mode 100644 index 3a8f934..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft-ipv6.yang +++ /dev/null @@ -1,94 +0,0 @@ -submodule openconfig-aft-ipv6 { - belongs-to "openconfig-aft" { - prefix "oc-aft"; - } - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-inet-types { prefix "oc-inet"; } - - // Include common cross-AFT groupings from the common submodule. - include openconfig-aft-common; - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Submodule containing definitions of groupings for the abstract - forwarding tables for IPv6."; - - oc-ext:openconfig-version "0.3.1"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.3.1"; - } - - revision 2017-05-10 { - description - "Refactor to provide concretised per-AF schemas per AFT."; - reference "0.3.0"; - } - - grouping aft-ipv6-unicast-structural { - description - "Structural grouping defining the schema for the IPv6 unicast - abstract forwarding table."; - - list ipv6-entry { - key "prefix"; - - description - "List of the IPv6 unicast entries within the abstract - forwarding table. This list is keyed by the destination IPv6 - prefix."; - - leaf prefix { - type leafref { - path "../config/prefix"; - } - description - "Reference to the IPv6 unicast destination prefix which - must be matched to utilise the AFT entry."; - } - - container config { - description - "Configuration parameters for the IPv6 unicast AFT entry."; - uses aft-ipv6-unicast-entry-config; - } - - container state { - config false; - description - "Operational state parameters for the IPv6 unicast AFT - entry."; - uses aft-ipv6-unicast-entry-config; - uses aft-ipv6-unicast-entry-state; - } - } - } - - grouping aft-ipv6-unicast-entry-config { - description - "Configuration parameters for the IPv6 unicast entry."; - - leaf prefix { - type oc-inet:ipv6-prefix; - description - "The IPv6 destination prefix that should be matched to - utilise the AFT entry."; - } - } - - grouping aft-ipv6-unicast-entry-state { - description - "Operational state parameters for the IPv6 unicast entry."; - uses aft-common-entry-state; - uses aft-common-ip-state; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-aft-mpls.yang b/src/plugins/yang/openconfig/openconfig-aft-mpls.yang deleted file mode 100644 index 1772fe0..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft-mpls.yang +++ /dev/null @@ -1,111 +0,0 @@ -submodule openconfig-aft-mpls { - belongs-to "openconfig-aft" { - prefix "oc-aft"; - } - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-mpls-types { prefix "oc-mplst"; } - - // Include common cross-AFT groupings from the common submodule. - include openconfig-aft-common; - - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Submodule containing definitions of groupings for the abstract - forwarding table for MPLS label forwarding."; - - oc-ext:openconfig-version "0.3.1"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.3.1"; - } - - revision 2017-05-10 { - description - "Refactor to provide concretised per-AF schemas per AFT."; - reference "0.3.0"; - } - - grouping aft-mpls-structural { - description - "Structural grouping defining the schema for the MPLS - abstract forwarding table."; - - list label-entry { - key "label"; - - description - "List of the MPLS entries within the abstract - forwarding table. This list is keyed by the top-most MPLS - label."; - - leaf label { - type leafref { - path "../config/label"; - } - description - "Reference to the top-most MPLS label matched by the - entry."; - } - - container config { - description - "Configuration parameters for the MPLS AFT entry."; - uses aft-mpls-entry-config; - } - - container state { - config false; - description - "Operational state parameters for the MPLS AFT - entry."; - uses aft-mpls-entry-config; - uses aft-mpls-entry-state; - } - } - } - - grouping aft-mpls-entry-config { - description - "Configuration parameters for the MPLS entry."; - - leaf label { - type oc-mplst:mpls-label; - description - "The top-most MPLS label that should be matched to - utilise the AFT entry."; - } - } - - grouping aft-mpls-entry-state { - description - "Operational state parameters for the MPLS entry."; - uses aft-common-entry-state; - - leaf-list popped-mpls-label-stack { - type oc-mplst:mpls-label; - description - "The MPLS label stack to be popped from the packet when - switched by the system. The stack is encoded as a leaf-list - such that the first entry is the label that is outer-most (i.e., - furthest from the bottom of the stack). - - If the local system pops the outer-most label 400, then the - value of this list is [400,]. If the local system removes two - labels, the outer-most being 500, and the second of which is - 400, then the value of the list is [500, 400]. - - A swap operation is reflected by entries in the - popped-mpls-label-stack and pushed-mpls-label-stack nodes."; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-aft-network-instance.yang b/src/plugins/yang/openconfig/openconfig-aft-network-instance.yang deleted file mode 100644 index aed74cf..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft-network-instance.yang +++ /dev/null @@ -1,98 +0,0 @@ -module openconfig-aft-network-instance { - yang-version "1"; - - namespace "http://openconfig.net/yang/aft/ni"; - prefix "oc-aftni"; - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-network-instance { prefix "oc-ni"; } - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module provides augmentations that are utilized - when building the OpenConfig network instance model to - add per-NI AFTs."; - - oc-ext:openconfig-version "0.2.2"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.2.2"; - } - - revision 2017-01-13 { - description - "Updated revision for external review"; - reference "0.2.1"; - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:afts/oc-ni:next-hops/oc-ni:next-hop/oc-ni:state" { - - description - "Add leaves that require referencing of a network instance to the - operational state parameters of a next-hop within the AFT for IPv4 - unicast."; - - uses aft-nexthop-ni-state; - } - - grouping aft-nexthop-ni-state { - description - "Operational state parameters relating to a next-hop which reference a - network instance."; - - leaf network-instance { - type oc-ni:network-instance-ref; - description - "The network-instance within which the next-hop should be resolved. - When this leaf is unspecified, the next-hop is resolved within - the local instance."; - } - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:afts/oc-ni:ipv4-unicast/oc-ni:ipv4-entry/oc-ni:state" { - description - "Add leaves that require referencing of a network instance to the - operational state parameters of an entry within the IPv4 unicast AFT."; - - uses aft-entry-ni-state; - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:afts/oc-ni:ipv6-unicast/oc-ni:ipv6-entry/oc-ni:state" { - description - "Add leaves that require referencing of a network instance to the - operational state parameters of an entry within the IPv6 unicast AFT."; - - uses aft-entry-ni-state; - } - - grouping aft-entry-ni-state { - description - "Operational state parameters relating to an AFT entry which reference - a network instance."; - - leaf origin-network-instance { - type oc-ni:network-instance-ref; - description - "If the AFT entry was imported from another network instance (e.g., it - corresponds to a L3 forwarding entry which was learned within another - network-instance), the value of this leaf reflects the network-instance - from which it was learned. - - For example, if the local network-instance corresponds to a L3VRF, and - routes are imported from the VPNv4 address-family of the BGP instance - in the DEFAULT_INSTANCE, then this value would reflect the - DEFAULT_INSTANCE as the origin-network-instance."; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-aft-pf.yang b/src/plugins/yang/openconfig/openconfig-aft-pf.yang deleted file mode 100644 index 839f9e5..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft-pf.yang +++ /dev/null @@ -1,172 +0,0 @@ -submodule openconfig-aft-pf { - belongs-to "openconfig-aft" { - prefix "oc-aft"; - } - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-inet-types { prefix "oc-inet"; } - import openconfig-yang-types { prefix "oc-yang"; } - import openconfig-mpls-types { prefix "oc-mplst"; } - import openconfig-packet-match-types { - prefix "oc-pkt-match-types"; - } - - // Include common cross-AFT groupings from the common submodule. - include openconfig-aft-common; - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Submodule containing definitions of groupings for the abstract - forwarding table(s) for policy forwarding entries. These are - defined to be forwarding tables that allow matches on - fields other than the destination address that is used in - other forwarding tables."; - - oc-ext:openconfig-version "0.3.1"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.3.1"; - } - - revision 2017-05-10 { - description - "Refactor to provide concretised per-AF schemas per AFT."; - reference "0.3.0"; - } - - grouping aft-pf-structural { - description - "Structural grouping defining the schema for the policy - forwarding abstract forwarding table."; - - list policy-forwarding-entry { - key "index"; - - description - "List of the policy forwarding entries within the abstract - forwarding table. Each entry is uniquely identified by an - index on the system, due to the arbitrary match conditions - that may be implemented within the policy forwarding AFT. - The index may change upon changes of the entry if, and only - if, the device exporting the AFT replaces the entire entry - by removing the previous entry and replacing it with a - subsequent updated version."; - - leaf index { - type leafref { - path "../config/index"; - } - description - "Reference to the arbitary index for the policy forwarding - AFT entry."; - } - - container config { - description - "Configuration parameters for the Policy forwarding - AFT entry."; - uses aft-pf-entry-config; - } - - container state { - config false; - description - "Operational state parameters for the Policy Forwarding - AFT entry."; - uses aft-pf-entry-config; - uses aft-pf-entry-state; - } - } - } - - grouping aft-pf-entry-config { - description - "Configuration parameters for the Policy Forwarding - AFT entry."; - - leaf index { - type uint64; - description - "An arbitrary 64-bit index identifying the policy forwarding - AFT entry."; - } - - leaf ip-prefix { - type oc-inet:ip-prefix; - description - "The IP prefix that the forwarding entry matches."; - } - - leaf mac-address { - type oc-yang:mac-address; - description - "The MAC address that the forwarding entry matches. Used for - Layer 2 forwarding entries, e.g., within a VSI instance."; - } - - leaf mpls-label { - type oc-mplst:mpls-label; - description - "The MPLS label that the forwarding entry matches. Used for - MPLS forwarding entries, whereby the local device acts as an - LSR."; - } - - leaf mpls-tc { - type oc-mplst:mpls-tc; - description - "The value of the MPLS Traffic Class bits (formerly known as - the MPLS experimental bits) that are to be matched by the AFT - entry."; - reference - "RFC5462: Multiprotocol Label Switching (MPLS) Label Stack - Entry: 'EXP' Field Renamed to 'Traffic Class' Field"; } - - leaf ip-dscp { - type oc-inet:dscp; - description - "The value of the differentiated services code point (DSCP) to - be matched for the forwarding entry. The value is specified in - cases where specific class-based forwarding based on IP is - implemented by the device."; - } - - leaf ip-protocol { - type oc-pkt-match-types:ip-protocol-type; - description - "The value of the IP protocol field of an IPv4 packet, or the - next-header field of an IPv6 packet which is to be matched by - the AFT entry. This field is utilised where forwarding is - performed based on L4 information."; - } - - leaf l4-src-port { - type oc-inet:port-number; - description - "The value of the source port field of the transport header - that is to be matched by the AFT entry."; - } - - leaf l4-dst-port { - type oc-inet:port-number; - description - "The value of the destination port field of the transport - header that is to be matched by the AFT entry."; - } - } - - grouping aft-pf-entry-state { - description - "Operational state parameters for the Policy Forwarding - AFT entry."; - uses aft-common-entry-state; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-aft-types.yang b/src/plugins/yang/openconfig/openconfig-aft-types.yang deleted file mode 100644 index 7af2744..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft-types.yang +++ /dev/null @@ -1,58 +0,0 @@ -module openconfig-aft-types { - - namespace "http://openconfig.net/yang/fib-types"; - prefix "oc-aftt"; - - import openconfig-extensions { prefix "oc-ext"; } - - organization - "OpenConfig Working Group"; - - contact - "OpenConfig Working Group - www.openconfig.net"; - - description - "Types related to the OpenConfig Abstract Forwarding - Table (AFT) model"; - - oc-ext:openconfig-version "0.3.1"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.3.1"; - } - - revision 2017-05-10 { - description - "Refactor to provide concretised per-AF schemas per AFT."; - reference "0.3.0"; - } - - typedef encapsulation-header-type { - type enumeration { - enum GRE { - description - "The encapsulation header is a Generic Routing Encapsulation - header."; - } - enum IPV4 { - description - "The encapsulation header is an IPv4 packet header"; - } - enum IPV6 { - description - "The encapsulation header is an IPv6 packet header"; - } - enum MPLS { - description - "The encapsulation header is one or more MPLS labels indicated - by the pushed and popped label stack lists."; - } - } - description - "Types of tunnel encapsulation that are supported by systems as either - head- or tail-end."; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-aft.yang b/src/plugins/yang/openconfig/openconfig-aft.yang deleted file mode 100644 index ef3374d..0000000 --- a/src/plugins/yang/openconfig/openconfig-aft.yang +++ /dev/null @@ -1,144 +0,0 @@ -module openconfig-aft { - - yang-version "1"; - - namespace "http://openconfig.net/yang/aft"; - - prefix "oc-aft"; - - import openconfig-extensions { prefix "oc-ext"; } - - // Include IPv4 AFT submodule. - include openconfig-aft-ipv4; - // Include IPv6 AFT submodule. - include openconfig-aft-ipv6; - // Include MPLS AFT submodule. - include openconfig-aft-mpls; - // Include policy forwarding AFT submodule. - include openconfig-aft-pf; - // Include the ethernet AFT submodule. - include openconfig-aft-ethernet; - // Include the common cross-AFT entities. - include openconfig-aft-common; - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "A model describing the forwarding entries installed on a network - element. It should be noted that this model is not expected to - align 1:1 with the underlying structure used directly by a - forwarding element (e.g., linecard), but rather provide an - abstraction that can be consumed by an NMS to observe, and in some - cases manipulate, the internal forwarding database in a simplified - manner. Since the underlying model of the forwarding table is not - expected to align with this model, the structure described herein - is referred to as an Abstract Forwarding Table (AFT), rather than - the FIB."; - - oc-ext:openconfig-version "0.3.1"; - - revision 2017-08-24 { - description - "Formatting fixes"; - reference "0.3.1"; - } - - revision 2017-05-10 { - description - "Refactor to provide concretised per-AF schemas per AFT."; - reference "0.3.0"; - } - - // config + state groupings - - // structural groupings - - grouping aft-top { - description - "Top-level grouping allowing per-protocol instantiation of the - AFT."; - - container afts { - description - "The abstract forwarding tables (AFTs) that are associated - with the network instance. An AFT is instantiated per-protocol - running within the network-instance - such that one exists for - IPv4 Unicast, IPv6 Unicast, MPLS, L2 forwarding entries, etc. - A forwarding entry within the FIB has a set of next-hops, - which may be a reference to an entry within another table - - e.g., where a Layer 3 next-hop has an associated Layer 2 - forwarding entry."; - - container ipv4-unicast { - description - "The abstract forwarding table for IPv4 unicast. Entries - within this table are uniquely keyed on the IPv4 unicast - destination prefix which is matched by ingress packets. - - The data set represented by the IPv4 Unicast AFT is the set - of entries from the IPv4 unicast RIB that have been selected - for installation into the FIB of the device exporting the - data structure."; - - uses aft-ipv4-unicast-structural; - } - - container ipv6-unicast { - description - "The abstract forwarding table for IPv6 unicast. Entries - within this table are uniquely keyed on the IPv6 unicast - destination prefix which is matched by ingress packets. - - The data set represented by the IPv6 Unicast AFTis the set - of entries within the IPv6 RIB that "; - - uses aft-ipv6-unicast-structural; - - } - - container policy-forwarding { - description - "The abstract forwarding table for policy-based forwarding - entries. Since multiple match criteria can be utilised - within a policy-based forwarding rule, this AFT provides a - flexible match criteria, and is indexed based on an - arbitrary 64-bit index. Entries within the AFT may match on - multiple field types (e.g., L4 header fields, as well as L2 - fields). - - Examples of entries within this table are: - - IPv4 policy-based routing based on DSCP. - - MPLS policy-based forwarding entries."; - - uses aft-pf-structural; - } - - container mpls { - description - "The abstract forwarding table for MPLS label based - forwarding entries. Entries within the table are keyed based - on the top-most MPLS label in the stack on the ingress - packet."; - - uses aft-mpls-structural; - } - - container ethernet { - description - "The abstract forwarding table for Ethernet based forwarding - entries. Entries within the table are keyed based on the - destination MAC address on the ingress packet."; - - uses aft-ethernet-structural; - } - - uses aft-next-hop-groups-structural; - uses aft-nhop-structural; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-alarm-types.yang b/src/plugins/yang/openconfig/openconfig-alarm-types.yang deleted file mode 100644 index 7ec8665..0000000 --- a/src/plugins/yang/openconfig/openconfig-alarm-types.yang +++ /dev/null @@ -1,139 +0,0 @@ -module openconfig-alarm-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/alarms/types"; - - prefix "oc-alarm-types"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines operational state data related to alarms - that the device is reporting. - - This model reuses some data items defined in the draft IETF - YANG Alarm Module: - https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02 - - Portions of this code were derived from the draft IETF YANG Alarm - Module. Please reproduce this note if possible. - - IETF code is subject to the following copyright and license: - Copyright (c) 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)."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2018-01-16" { - description - "Moved alarm identities into separate types module"; - reference "0.2.0"; - } - - // identity statements - identity OPENCONFIG_ALARM_TYPE_ID { - description - "Base identity for alarm type ID profiles"; - } - - identity AIS { - base OPENCONFIG_ALARM_TYPE_ID; - description - "Defines an alarm indication signal type of alarm"; - } - - identity EQPT { - base OPENCONFIG_ALARM_TYPE_ID; - description - "Defines an equipment related type of alarm that is specific - to the physical hardware"; - } - - identity LOS { - base OPENCONFIG_ALARM_TYPE_ID; - description - "Defines a loss of signal type of alarm"; - } - - identity OTS { - base OPENCONFIG_ALARM_TYPE_ID; - description - "Defines a optical transport signal type of alarm"; - } - - identity OPENCONFIG_ALARM_SEVERITY { - description - "Base identity for alarm severity profiles. Derived - identities are based on contents of the draft - IETF YANG Alarm Module"; - reference - "IETF YANG Alarm Module: Draft - typedef severity - https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; - - } - - identity UNKNOWN { - base OPENCONFIG_ALARM_SEVERITY; - description - "Indicates that the severity level could not be determined. - This level SHOULD be avoided."; - } - - identity MINOR { - base OPENCONFIG_ALARM_SEVERITY; - description - "Indicates the existence of a non-service affecting fault - condition and that corrective action should be taken in - order to prevent a more serious (for example, service - affecting) fault. Such a severity can be reported, for - example, when the detected alarm condition is not currently - degrading the capacity of the resource"; - } - - identity WARNING { - base OPENCONFIG_ALARM_SEVERITY; - description - "Indicates the detection of a potential or impending service - affecting fault, before any significant effects have been felt. - Action should be taken to further diagnose (if necessary) and - correct the problem in order to prevent it from becoming a more - serious service affecting fault."; - } - - identity MAJOR { - base OPENCONFIG_ALARM_SEVERITY; - description - "Indicates that a service affecting condition has developed - and an urgent corrective action is required. Such a severity - can be reported, for example, when there is a severe - degradation in the capability of the resource and its full - capability must be restored."; - } - - identity CRITICAL { - base OPENCONFIG_ALARM_SEVERITY; - description - "Indicates that a service affecting condition has occurred - and an immediate corrective action is required. Such a - severity can be reported, for example, when a resource becomes - totally out of service and its capability must be restored."; - } - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-alarms.yang b/src/plugins/yang/openconfig/openconfig-alarms.yang deleted file mode 100644 index f1ca587..0000000 --- a/src/plugins/yang/openconfig/openconfig-alarms.yang +++ /dev/null @@ -1,221 +0,0 @@ -module openconfig-alarms { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/alarms"; - - prefix "oc-alarms"; - - // import some basic types - import openconfig-alarm-types { prefix oc-alarm-types; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } - import openconfig-platform { prefix oc-platform; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines operational state data related to alarms - that the device is reporting. - - This model reuses some data items defined in the draft IETF - YANG Alarm Module: - https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02 - - Portions of this code were derived from the draft IETF YANG Alarm - Module. Please reproduce this note if possible. - - IETF code is subject to the following copyright and license: - Copyright (c) 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)."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2018-01-16" { - description - "Moved alarm identities into separate types module"; - reference "0.3.0"; - } - - revision "2018-01-10" { - description - "Make alarms list read only"; - reference "0.2.0"; - } - - revision "2017-08-24" { - description - "Initial public release"; - reference "0.1.0"; - } - - - // grouping statements - - grouping alarm-state { - description - "Operational state data for device alarms"; - - leaf id { - type string; - description - "Unique ID for the alarm -- this will not be a - configurable parameter on many implementations"; - } - - leaf resource { - type string; - description - "The item that is under alarm within the device. The - resource may be a reference to an item which is - defined elsewhere in the model. For example, it - may be a platform/component, interfaces/interface, - terminal-device/logical-channels/channel, etc. In this - case the system should match the name of the referenced - item exactly. The referenced item could alternatively be - the path of the item within the model."; - reference - "IETF YANG Alarm Module: Draft - typedef resource - https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; - } - - leaf text { - type string; - description - "The string used to inform operators about the alarm. This - MUST contain enough information for an operator to be able - to understand the problem. If this string contains structure, - this format should be clearly documented for programs to be - able to parse that information"; - reference - "IETF YANG Alarm Module: Draft - typedef alarm-text - https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; - } - - leaf time-created { - type oc-types:timeticks64; - description - "The time at which the alarm was raised by the system. - This value is expressed as nanoseconds since the Unix Epoch"; - } - - leaf severity { - type identityref { - base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY; - } - description - "The severity level indicating the criticality and impact - of the alarm"; - reference - "IETF YANG Alarm Module: Draft - typedef severity - https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; - } - - leaf type-id { - type union { - type string; - type identityref { - base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID; - } - } - description - "The abbreviated name of the alarm, for example LOS, - EQPT, or OTS. Also referred to in different systems as - condition type, alarm identifier, or alarm mnemonic. It - is recommended to use the OPENCONFIG_ALARM_TYPE_ID - identities where possible and only use the string type - when the desired identityref is not yet defined"; - reference - "IETF YANG Alarm Module: Draft - typedef alarm-type-id - https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; - } - } - - grouping alarm-config { - description - "Configuration data for device alarms"; - } - - grouping alarms-top { - description - "Top-level grouping for device alarms"; - - container alarms { - description - "Top-level container for device alarms"; - - config false; - - list alarm { - key "id"; - description - "List of alarms, keyed by a unique id"; - - leaf id { - type leafref { - path "../state/id"; - } - - description - "References the unique alarm id"; - } - - container config { - description - "Configuration data for each alarm"; - - uses alarm-config; - } - - container state { - config false; - - description - "Operational state data for a device alarm"; - - uses alarm-config; - uses alarm-state; - } - } - } - } - - - // augments - - augment "/oc-platform:components/oc-platform:component/oc-platform:state" { - description - "Adds specific alarms related to a component."; - - leaf equipment-failure { - type boolean; - default "false"; - description - "If true, the hardware indicates that the component's physical equipment - has failed"; - } - - leaf equipment-mismatch { - type boolean; - default "false"; - description - "If true, the hardware indicates that the component inserted into the - affected component's physical location is of a different type than what - is configured"; - } - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-ap-manager.yang b/src/plugins/yang/openconfig/openconfig-ap-manager.yang deleted file mode 100644 index 6fb3f8f..0000000 --- a/src/plugins/yang/openconfig/openconfig-ap-manager.yang +++ /dev/null @@ -1,220 +0,0 @@ -module openconfig-ap-manager { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/wifi/ap-manager"; - - // Assign this module a prefix to be used by other modules, when imported. - prefix "ap-manager"; - - // Imports - import openconfig-extensions { prefix oc-ext; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-wifi-types { prefix oc-wifi; } - - // Meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines the top level configuration and state data for a - system which manages Access Points."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-02-14" { - description - "Initial version"; - reference "0.1.0"; - } - - grouping provision-aps-config { - description - "Assignment of hostname to an Access Point."; - - leaf mac { - type oc-yang:mac-address; - description - "MAC address of the AP primary Ethernet interface. If AP - has multiple Ethernet interfaces, this would be the MAC printed - on the unit label and referenced within the management system. - Vendors MUST reject attempts to configure this leaf."; - } - - leaf hostname { - type oc-inet:domain-name; - description - "Hostname of the Access Point."; - } - - leaf country-code { - type string { - pattern '[A-Z]{2}'; - } - description - "Country code where the AP operates in ISO 3166-1 alpha-2 - format."; - } - } - - grouping controller-aps-system-state { - description - "Grouping for a Controller & AP system state data."; - - leaf mac { - type oc-yang:mac-address; - description - "MAC address of the AP primary Ethernet interface. If AP - has multiple Ethernet interfaces, this would be the MAC printed - on the unit label and referenced within the management system. - Vendors MUST reject attempts to configure this leaf."; - } - - leaf hostname { - type oc-inet:domain-name; - description - "Hostname of the Access Point."; - } - - leaf opstate { - type identityref { - base oc-wifi:AP_STATE; - } - description - "The current operational state of the AP."; - } - - leaf uptime { - type uint32; - units seconds; - description - "Seconds this AP has been in the op-state of 'UP'."; - } - - leaf enabled { - type boolean; - description - "Wheather the AP is enabled or disabled."; - } - - leaf serial { - type string; - description - "Serial number of the Access Point."; - } - - leaf model { - type string; - description - "Model number of the Access Point."; - } - - leaf ipv4 { - type oc-inet:ipv4-address; - description - "The IPv4 address of the Access Point."; - } - - leaf ipv6 { - type oc-inet:ipv6-address; - description - "The IPv6 address of the Access Point."; - } - - leaf power-source { - type enumeration { - enum AT { - description "Powered using 802.3at."; - } - enum AF { - description "Powered using 802.3af."; - } - enum PLUG { - description "Powered using local source, not PoE."; - } - } - description - "Enumerate how the AP is being powered."; - } - } - - grouping provision-ap-top { - description - "Top-level grouping for assigning hostnames to APs."; - - container provision-aps { - description - "Top most container for assigning hostnames to APs."; - - list provision-ap { - key "mac"; - description - "List of MAC addresses that will have hostnames assigned."; - - leaf mac { - type leafref { - path "../config/mac"; - } - description - "Reference to the MAC address list key. This leaf is a reference - only and not to be configured."; - } - - container config { - description - "Config container for assigning hostnames to APs."; - - uses provision-aps-config; - } - - container state { - config false; - description - "State container for assigning hostnames to APs."; - - uses provision-aps-config; - } - } - } - } - - grouping joined-aps-top { - description - "Top-level grouping for APs assigned to controller(s)."; - - container joined-aps { - description - "Top most container for joined-aps."; - - list joined-ap { - key "hostname"; - config false; - description - "List of access points that have joined the controller."; - - leaf hostname { - type leafref { - path "../state/hostname"; - } - description - "Reference to the MAC address list key."; - } - - container state { - config false; - description - "State container for Joined APs."; - - uses controller-aps-system-state; - } - } - } - } - uses provision-ap-top; - uses joined-aps-top; -} diff --git a/src/plugins/yang/openconfig/openconfig-bfd.yang b/src/plugins/yang/openconfig/openconfig-bfd.yang deleted file mode 100644 index fc573e5..0000000 --- a/src/plugins/yang/openconfig/openconfig-bfd.yang +++ /dev/null @@ -1,738 +0,0 @@ -module openconfig-bfd { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/bfd"; - - prefix "oc-bfd"; - - // import some basic types - import openconfig-extensions { prefix "ocext"; } - import openconfig-types { prefix "oc-types"; } - import openconfig-interfaces { prefix "oc-if"; } - import openconfig-inet-types { prefix "oc-inet"; } - import openconfig-if-types { prefix "oc-ift"; } - import openconfig-network-instance { prefix "oc-ni"; } - import openconfig-policy-types { prefix "oc-pol-types"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "An OpenConfig model of Bi-Directional Forwarding Detection (BFD) - configuration and operational state."; - - ocext:openconfig-version "0.1.0"; - - revision "2017-11-17" { - description - "Update version number for initial sharing."; - reference "0.1.0"; - } - - revision "2017-10-19" { - description - "Adopt OpenConfig types models, type corrections"; - reference "0.0.2"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - typedef bfd-session-state { - type enumeration { - enum UP { - description - "The BFD session is perceived to be up by the system."; - } - enum DOWN { - description - "The BFD session is perceived to be down by the system."; - } - enum ADMIN_DOWN { - description - "The BFD session is administratively disabled."; - } - enum INIT { - description - "The BFD session is perceived to be initialising by the - system."; - } - } - description - "The state of the BFD session according to the system referred - to by the context of the leaf."; - reference - "RFC5880 - Bidirectional Forwarding Detection, Section - 4.1"; - } - - typedef bfd-diagnostic-code { - type enumeration { - enum NO_DIAGNOSTIC { - value 0; - description - "No diagnostic code was specified, or the session has not - changed state."; - } - enum DETECTION_TIMEOUT { - value 1; - description - "The control detection time expired: no BFD packet was - received within the required period."; - } - enum ECHO_FAILED { - value 2; - description - "The BFD echo function failed - echo packets have not been - received for the required period of time."; - } - enum FORWARDING_RESET { - value 3; - description - "The forwarding plane in the local system was reset - such - that the remote system cannot rely on the forwarding state of - the device specifying this error code."; - } - enum PATH_DOWN { - value 4; - description - "Signalling outside of BFD specified that the path underlying - this session has failed."; - } - enum CONCATENATED_PATH_DOWN { - value 5; - description - "When a BFD session runs over a series of path segments, this - error code indicates that a subsequent path segment (i.e., - one in the transmit path between the source and destination - of the session) has failed."; - } - enum ADMIN_DOWN { - value 6; - description - "The BFD session has been administratively disabled by the - peer."; - } - enum REVERSE_CONCATENATED_PATH_DOWN { - value 7; - description - "In the case that a BFD session is running over a series of - path segments, this error code indicates that a path segment - on the reverse path (i.e., in the transmit direction from the - destination to the source of the session) has failed."; - } - } - description - "Diagnostic codes defined by BFD. These typically indicate the - reason for a change of session state."; - reference - "RFC5880 - Bidirectional Forwarding Detection, Section - 4.1"; - } - - - grouping bfd-interface-config { - description - "Top-level per-interface configuration parameters for BFD."; - - leaf id { - type string; - description - "A unique identifier for the interface."; - } - - leaf enabled { - type boolean; - description - "When this leaf is set to true then the BFD session is enabled - on the specified interface - if it is set to false, it is - administratively disabled."; - } - - leaf local-address { - type oc-inet:ip-address; - description - "The source IP address to be used for BFD sessions over this - interface."; - } - - leaf desired-minimum-tx-interval { - type uint32; - units microseconds; - description - "The minimum interval between transmission of BFD control - packets that the operator desires. This value is advertised to - the peer, however the actual interval used is specified by - taking the maximum of desired-minimum-tx-interval and the - value of the remote required-minimum-receive interval value. - - This value is specified as an integer number of microseconds."; - } - - leaf required-minimum-receive { - type uint32; - units microseconds; - description - "The minimum interval between received BFD control packets that - this system should support. This value is advertised to the - remote peer to indicate the maximum frequency (i.e., minimum - inter-packet interval) between BFD control packets that is - acceptable to the local system."; - } - - // rjs: Could have required-minimum-echo-receive here, but this is - // generally not configurable. - - leaf detection-multiplier { - type uint16 { - range "1..max"; - } - description - "The number of packets that must be missed to declare this - session as down. The detection interval for the BFD session - is calculated by multiplying the value of the negotiated - transmission interval by this value."; - } - - leaf enable-per-member-link { - type boolean; - default false; - description - "When this leaf is set to true - BFD will be enabled on - each member interface of the aggregated Ethernet bundle."; - - when "/oc-if:interfaces/oc-if:interface" + - "[name=current()/../../interface-ref/config/interface]/" + - "oc-if:state/oc-if:type = 'oc-ift:IF_AGGREGATE'" { - description - "Include per-member link BFD only when the type of - interface is a link aggregate."; - } - } - } - - grouping bfd-interface-state { - // placeholder - description - "Operational state parameters relating to BFD running on an - interface."; - } - - grouping bfd-session-state-mode-timers-common { - description - "Common operational state parameters that are re-used across - both asynchronous and echo modes of BFD."; - - leaf last-packet-transmitted { - type uint64; - description - "The date and time at which the last BFD packet - was transmitted for this session, expressed as the number - of nanoseconds since the Unix Epoch (January 1, 1970, - 00:00 UTC)."; - } - - leaf last-packet-received { - type uint64; - description - "The date and time at which the last BFD packet - was received for this session, expressed as the number - of nanoseconds since the Unix Epoch (January 1, 1970, - 00:00 UTC)."; - } - - leaf transmitted-packets { - // TODO: looks to be unsupported on JUNOS - type uint64; - description - "The number of packets that have been transmitted - by the local system."; - } - - leaf received-packets { - // TODO: looks to be unsupported on JUNOS - type uint64; - description - "The number of packets that have been received by the - local system from the remote neighbour."; - } - - leaf up-transitions { - // TODO: looks to only be supported in SROS - type uint64; - description - "The number of times that the adjacency with the neighbor - has transitioned into the up state."; - } - } - - grouping bfd-session-state-sessiondetails-common { - description - "Common session details for a BFD session."; - - leaf session-state { - type bfd-session-state; - description - "The state of the BFD session perceived by the local system."; - - } - - leaf remote-session-state { - type bfd-session-state; - description - "The reported state of the BFD session according to the remote - system. This state reflects the last state reported in a BFD - control packet."; - } - - leaf last-failure-time { - type oc-types:timeticks64; - description - "The time of the last transition of the BFD session out of - the UP state, expressed as the number of nanoseconds since - the Unix epoch."; - } - - leaf failure-transitions { - type uint64; - description - "The number of times that the BFD session has transitioned - out of the UP state."; - } - - leaf local-discriminator { - type string; - description - "A unique identifier used by the local system to identify this - BFD session."; - } - - leaf remote-discriminator { - type string; - description - "A unique identified used by the remote system to identify this - BFD session."; - } - - leaf local-diagnostic-code { - type bfd-diagnostic-code; - description - "The local BFD diagnostic code indicating the most recent - reason for failure of this BFD session."; - } - - leaf remote-diagnostic-code { - type bfd-diagnostic-code; - description - "The remote BFD diagnostic code indicating the remote system's - reason for failure of the BFD session"; - } - - leaf remote-minimum-receive-interval { - type uint32; - description - "The value of the minimum receive interval that was specified - in the most recent BFD control packet received from the peer."; - } - - leaf demand-mode-requested { - type boolean; - description - "This leaf is set to true when the remote system has requested - demand mode be run for this session."; - } - - leaf remote-authentication-enabled { - type boolean; - description - "This leaf is set to true when the remote system has specified - that authentication is present for the BFD session."; - } - - leaf remote-control-plane-independent { - type boolean; - description - "This leaf is set to true when the remote system has specified - that the hardware implementing this BFD session is independent - of the control plane's liveliness."; - } - } - - - grouping bfd-session-state-async-common { - description - "Common parameters for asynchronous BFD sessions"; - - container async { - description - "Operational state parameters specifically relating to - asynchronous mode of BFD."; - - uses bfd-session-state-mode-timers-common; - } - } - - grouping bfd-session-state-echo-common { - description - "Common parameters for echo-mode BFD sessions."; - - container echo { - description - "Operational state parameters specifically relating to the - echo mode of BFD."; - - leaf active { - type boolean; - description - "This leaf is set to true when echo mode is running between - the local and remote system. When it is set to false, solely - asynchronous mode is active."; - } - - uses bfd-session-state-mode-timers-common; - } - } - - - grouping bfd-session-state-common { - description - "Common operational state parameters that may be re-used across - multiple BFD session contexts."; - - leaf local-address { - type oc-inet:ip-address; - description - "The IP address used by the local system for this BFD session."; - } - - leaf remote-address { - type oc-inet:ip-address; - description - "The IP address used by the remote system for this BFD session."; - } - - leaf-list subscribed-protocols { - type identityref { - base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; - } - description - "Indicates the set of protocols that currently use - this BFD session for liveliness detection."; - } - - uses bfd-session-state-sessiondetails-common; - uses bfd-session-state-echo-common; - uses bfd-session-state-async-common; - } - - grouping bfd-session-microbfd-common { - description - "BFD session parameters utilised only for micro-BFD sessions."; - - uses bfd-session-state-sessiondetails-common; - uses bfd-session-state-async-common; - } - - grouping bfd-interface-peer-state { - description - "Per-peer, per-interface operational state parameters for BFD."; - - uses bfd-session-state-common; - } - - grouping bfd-interface-microbfd-config { - description - "Configuration parameters for a microBFD session on an - interface."; - - leaf local-address { - type oc-inet:ip-address; - description - "The local IP address used by the system for the micro-BFD session - specified."; - } - - leaf remote-address { - type oc-inet:ip-address; - description - "The remote IP destination that should be used by the system for - the micro-BFD session specified."; - } - - leaf member-interface { - type leafref { - path "/oc-if:interfaces/" + - "oc-if:interface/oc-if:config/oc-if:name"; - } - // rjs: Note that this does not restrict to only interfaces that - // are part of the current LAG. An implementation should return - // NOK if such an interface is specified. - description - "Reference to a member link of the aggregate interface being - described."; - } - } - - grouping bfd-interface-microbfd-state { - description - "Operational state parameters relating to a micro-BFD session on - an interface."; - - uses bfd-session-microbfd-common; - } - - grouping bfd-interface-microbfd-structural { - description - "Structural grouping for micro-bfd configuration and state - parameters."; - - container micro-bfd-sessions { - description - "Parameters relating to micro-BFD sessions associated - with the interface."; - - list micro-bfd-session { - description - "This list contains configuration and state parameters - relating to micro-BFD session."; - reference - "RFC7130 - Bidirectional Forwarding Detection (BFD) - on Link Aggregation Group (LAG) Interfaces."; - - key "member-interface"; - - leaf member-interface { - type leafref { - path "../config/member-interface"; - } - description - "A reference to the member interface of the link - aggregate."; - } - - container config { - description - "Configuration parameters for the micro-BFD session."; - uses bfd-interface-microbfd-config; - } - - container state { - config false; - description - "Operational state parameters for the micro-BFD session."; - uses bfd-interface-microbfd-config; - uses bfd-interface-microbfd-state; - } - } - when "/oc-if:interfaces/oc-if:interface" + - "[name=current()/../interface-ref/config/interface]/" + - "oc-if:state/oc-if:type = 'oc-ift:IF_AGGREGATE'" { - description - "Include per-member link BFD only when the type of - interface is a link aggregate."; - } - } - } - - grouping bfd-interface-peer-structural { - description - "Structural grouping for BFD peers (in the context of an interface)."; - - container peers { - description - "Parameters relating to the BFD peers which are seen - over this interface."; - - list peer { - key "local-discriminator"; - config false; - - description - "Parameters relating to the BFD peer specified by the - remote address."; - - leaf local-discriminator { - type leafref { - path "../state/local-discriminator"; - } - description - "The local discriminator, which is unique for the - session on the system."; - } - - container state { - config false; - description - "Operational state parameters for the BFD session."; - - uses bfd-interface-peer-state; - } - } - } - } - - grouping bfd-top { - description - "Structural grouping for Bidirectional Forwarding Detection (BFD)."; - - container bfd { - description - "Configuration and operational state parameters for BFD."; - reference "RFC5880, RFC5881"; - - container interfaces { - description - "Interfaces on which BFD sessions are to be enabled."; - - list interface { - key "id"; - - description - "Per-interface configuration and state parameters for BFD."; - - leaf id { - type leafref { - path "../config/id"; - } - description - "A reference to an identifier for the interface on which - BFD is enabled."; - } - - container config { - description - "Configuration parameters for BFD on the specified - interface."; - uses bfd-interface-config; - } - - container state { - config false; - description - "Operational state parameters for BFD on the specified - interface."; - uses bfd-interface-config; - uses bfd-interface-state; - } - - uses oc-if:interface-ref; - - uses bfd-interface-microbfd-structural; - uses bfd-interface-peer-structural; - } - } - } - } - - grouping enable-bfd-config { - description - "Configuration parameters relating to enabling BFD."; - - leaf enabled { - type boolean; - description - "When this leaf is set to true, BFD is used to detect the - liveliness of the remote peer or next-hop."; - } - } - - grouping enable-bfd-state { - description - "Operational state parameters relating to enabling BFD."; - - leaf associated-session { - // TODO: this is a leafref to something unique, but seems - // like it might be expensive for the NMS to find out since - // it will need to cycle through all interfaces looking for - // the associated local-discriminator. - type leafref { - path "/bfd/interfaces/interface/peers/peer/local-discriminator"; - } - description - "A reference to the BFD session that is tracking the liveliness - of the remote entity."; - } - - // - // A fix to the above is to have the following leaf to show which - // interface is associated. - // - // leaf associated-interface { - // type leafref { - // path "/bfd/interfaces/interface/config/id"; - // } - // } - } - - grouping bfd-enable { - description - "Grouping which can be included in a protocol wishing to enable - BFD."; - - container enable-bfd { - description - "Enable BFD for liveliness detection to the next-hop or - neighbour."; - - container config { - description - "Configuration parameters relating to enabling BFD."; - - uses enable-bfd-config; - } - - container state { - config false; - description - "Operational state parameters relating to enabing BFD."; - - uses enable-bfd-config; - uses enable-bfd-state; - } - } - } - - // rjs - TODO - should these be specified within each model? The - // answer here is probably yes, since otherwise openconfig - // network-instance ends up with a circular reference. - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:protocols/oc-ni:protocol/oc-ni:bgp/" + - "oc-ni:neighbors/oc-ni:neighbor" { - description - "Augment the BGP routing protocol to add a link to BFD for - neighbour detection."; - - uses bfd-enable; - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:protocols/oc-ni:protocol/oc-ni:bgp/" + - "oc-ni:peer-groups/oc-ni:peer-group" { - description - "Augment the BGP routing protocol to add a link to BFD for - neighbor detection when specified within a peer-group."; - - uses bfd-enable; - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:protocols/oc-ni:protocol/oc-ni:static-routes/" + - "oc-ni:static/oc-ni:next-hops/oc-ni:next-hop" { - description - "Augment the static route configuration to allow a next-hop - to be tracked by BFD."; - - uses bfd-enable; - } - - uses bfd-top; -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-common-multiprotocol.yang b/src/plugins/yang/openconfig/openconfig-bgp-common-multiprotocol.yang deleted file mode 100644 index 6149a7c..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-common-multiprotocol.yang +++ /dev/null @@ -1,518 +0,0 @@ -submodule openconfig-bgp-common-multiprotocol { - - belongs-to openconfig-bgp { - prefix "oc-bgp"; - } - - import openconfig-extensions { prefix oc-ext; } - import openconfig-bgp-types { prefix oc-bgp-types; } - import openconfig-routing-policy { prefix oc-rpol; } - import openconfig-types { prefix oc-types; } - - include openconfig-bgp-common; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This sub-module contains groupings that are related to support - for multiple protocols in BGP. The groupings are common across - multiple contexts."; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-30" { - description - "Clarification of add-paths send-max leaf"; - reference "4.0.1"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - grouping bgp-common-mp-afi-safi-graceful-restart-config { - description - "BGP graceful restart parameters that apply on a per-AFI-SAFI - basis"; - - leaf enabled { - type boolean; - default false; - description - "This leaf indicates whether graceful-restart is enabled for - this AFI-SAFI"; - } - } - - grouping bgp-common-mp-afi-safi-config { - description - "Configuration parameters used for all BGP AFI-SAFIs"; - - leaf afi-safi-name { - type identityref { - base oc-bgp-types:AFI_SAFI_TYPE; - } - description "AFI,SAFI"; - } - - leaf enabled { - type boolean; - default false; - description - "This leaf indicates whether the AFI-SAFI is - enabled for the neighbour or group"; - } - } - - grouping bgp-common-mp-all-afi-safi-list-contents { - description - "A common grouping used for contents of the list that is used - for AFI-SAFI entries"; - - // import and export policy included for the afi/safi - uses oc-rpol:apply-policy-group; - - uses bgp-common-mp-ipv4-unicast-group; - uses bgp-common-mp-ipv6-unicast-group; - uses bgp-common-mp-ipv4-labeled-unicast-group; - uses bgp-common-mp-ipv6-labeled-unicast-group; - uses bgp-common-mp-l3vpn-ipv4-unicast-group; - uses bgp-common-mp-l3vpn-ipv6-unicast-group; - uses bgp-common-mp-l3vpn-ipv4-multicast-group; - uses bgp-common-mp-l3vpn-ipv6-multicast-group; - uses bgp-common-mp-l2vpn-vpls-group; - uses bgp-common-mp-l2vpn-evpn-group; - uses bgp-common-mp-srte-policy-ipv4-group; - uses bgp-common-mp-srte-policy-ipv6-group; - } - - // Groupings relating to each address family - grouping bgp-common-mp-ipv4-unicast-group { - description - "Group for IPv4 Unicast configuration options"; - - container ipv4-unicast { - when "../afi-safi-name = 'oc-bgp-types:IPV4_UNICAST'" { - description - "Include this container for IPv4 Unicast specific - configuration"; - } - - description "IPv4 unicast configuration options"; - - // include common IPv[46] unicast options - uses bgp-common-mp-ipv4-ipv6-unicast-common; - - // placeholder for IPv4 unicast specific configuration - } - } - - grouping bgp-common-mp-ipv6-unicast-group { - description - "Group for IPv6 Unicast configuration options"; - - container ipv6-unicast { - when "../afi-safi-name = 'oc-bgp-types:IPV6_UNICAST'" { - description - "Include this container for IPv6 Unicast specific - configuration"; - } - - description "IPv6 unicast configuration options"; - - // include common IPv[46] unicast options - uses bgp-common-mp-ipv4-ipv6-unicast-common; - - // placeholder for IPv6 unicast specific configuration - // options - } - } - - grouping bgp-common-mp-ipv4-labeled-unicast-group { - description - "Group for IPv4 Labeled Unicast configuration options"; - - container ipv4-labeled-unicast { - when "../afi-safi-name = 'oc-bgp-types:IPV4_LABELED_UNICAST'" { - description - "Include this container for IPv4 Labeled Unicast specific - configuration"; - } - - description "IPv4 Labeled Unicast configuration options"; - - uses bgp-common-mp-all-afi-safi-common; - - // placeholder for IPv4 Labeled Unicast specific config - // options - } - } - - grouping bgp-common-mp-ipv6-labeled-unicast-group { - description - "Group for IPv6 Labeled Unicast configuration options"; - - container ipv6-labeled-unicast { - when "../afi-safi-name = 'oc-bgp-types:IPV6_LABELED_UNICAST'" { - description - "Include this container for IPv6 Labeled Unicast specific - configuration"; - } - - description "IPv6 Labeled Unicast configuration options"; - - uses bgp-common-mp-all-afi-safi-common; - - // placeholder for IPv6 Labeled Unicast specific config - // options. - } - } - - grouping bgp-common-mp-l3vpn-ipv4-unicast-group { - description - "Group for IPv4 Unicast L3VPN configuration options"; - - container l3vpn-ipv4-unicast { - when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV4_UNICAST'" { - description - "Include this container for IPv4 Unicast L3VPN specific - configuration"; - } - - description "Unicast IPv4 L3VPN configuration options"; - - // include common L3VPN configuration options - uses bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common; - - // placeholder for IPv4 Unicast L3VPN specific config options. - } - } - - grouping bgp-common-mp-l3vpn-ipv6-unicast-group { - description - "Group for IPv6 Unicast L3VPN configuration options"; - - container l3vpn-ipv6-unicast { - when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV6_UNICAST'" { - description - "Include this container for unicast IPv6 L3VPN specific - configuration"; - } - - description "Unicast IPv6 L3VPN configuration options"; - - // include common L3VPN configuration options - uses bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common; - - // placeholder for IPv6 Unicast L3VPN specific configuration - // options - } - } - - grouping bgp-common-mp-l3vpn-ipv4-multicast-group { - description - "Group for IPv4 L3VPN multicast configuration options"; - - container l3vpn-ipv4-multicast { - when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV4_MULTICAST'" { - description - "Include this container for multicast IPv6 L3VPN specific - configuration"; - } - - description "Multicast IPv4 L3VPN configuration options"; - - // include common L3VPN multicast options - uses bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common; - - // placeholder for IPv4 Multicast L3VPN specific configuration - // options - } - } - - grouping bgp-common-mp-l3vpn-ipv6-multicast-group { - description - "Group for IPv6 L3VPN multicast configuration options"; - - container l3vpn-ipv6-multicast { - when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV6_MULTICAST'" { - description - "Include this container for multicast IPv6 L3VPN specific - configuration"; - } - - description "Multicast IPv6 L3VPN configuration options"; - - // include common L3VPN multicast options - uses bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common; - - // placeholder for IPv6 Multicast L3VPN specific configuration - // options - } - } - - grouping bgp-common-mp-l2vpn-vpls-group { - description - "Group for BGP-signalled VPLS configuration options"; - - container l2vpn-vpls { - when "../afi-safi-name = 'oc-bgp-types:L2VPN_VPLS'" { - description - "Include this container for BGP-signalled VPLS specific - configuration"; - } - - description "BGP-signalled VPLS configuration options"; - - // include common L2VPN options - uses bgp-common-mp-l2vpn-common; - - // placeholder for BGP-signalled VPLS specific configuration - // options - } - } - - grouping bgp-common-mp-l2vpn-evpn-group { - description - "Group for BGP EVPN configuration options"; - - container l2vpn-evpn { - when "../afi-safi-name = 'oc-bgp-types:L2VPN_EVPN'" { - description - "Include this container for BGP EVPN specific - configuration"; - } - - description "BGP EVPN configuration options"; - - // include common L2VPN options - uses bgp-common-mp-l2vpn-common; - - // placeholder for BGP EVPN specific configuration options - } - } - - // Common groupings across multiple AFI,SAFIs - grouping bgp-common-mp-all-afi-safi-common { - description - "Grouping for configuration common to all AFI,SAFI"; - - container prefix-limit { - description - "Configure the maximum number of prefixes that will be - accepted from a peer"; - - container config { - description - "Configuration parameters relating to the prefix - limit for the AFI-SAFI"; - uses bgp-common-mp-all-afi-safi-common-prefix-limit-config; - } - - container state { - config false; - description - "State information relating to the prefix-limit for the - AFI-SAFI"; - uses bgp-common-mp-all-afi-safi-common-prefix-limit-config; - } - } - } - - grouping bgp-common-mp-ipv4-ipv6-unicast-common { - description - "Common configuration that is applicable for IPv4 and IPv6 - unicast"; - - // include common afi-safi options. - uses bgp-common-mp-all-afi-safi-common; - - // configuration options that are specific to IPv[46] unicast - container config { - description - "Configuration parameters for common IPv4 and IPv6 unicast - AFI-SAFI options"; - uses bgp-common-mp-ipv4-ipv6-unicast-common-config; - } - container state { - config false; - description - "State information for common IPv4 and IPv6 unicast - parameters"; - uses bgp-common-mp-ipv4-ipv6-unicast-common-config; - } - } - - grouping bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common { - description - "Common configuration applied across L3VPN for IPv4 - and IPv6"; - - // placeholder -- specific configuration options that are generic - // across IPv[46] unicast address families. - uses bgp-common-mp-all-afi-safi-common; - } - - grouping bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common { - description - "Common configuration applied across L3VPN for IPv4 - and IPv6"; - - // placeholder -- specific configuration options that are - // generic across IPv[46] multicast address families. - uses bgp-common-mp-all-afi-safi-common; - } - - grouping bgp-common-mp-l2vpn-common { - description - "Common configuration applied across L2VPN address - families"; - - // placeholder -- specific configuration options that are - // generic across L2VPN address families - uses bgp-common-mp-all-afi-safi-common; - } - - grouping bgp-common-mp-srte-policy-ipv4-group { - description - "Grouping for SR-TE for AFI 1"; - - container srte-policy-ipv4 { - when "../afi-safi-name = 'oc-bgp-types:SRTE_POLICY_IPV4'" { - description - "Only include this container when the address family is - specified to be SR-TE Policy SAFI for the IPv4 unicast - address family."; - } - - description - "Configuration and operational state parameters relating to - the SR-TE Policy SAFI for IPv4 Unicast."; - - uses bgp-common-mp-all-afi-safi-common; - } - } - - grouping bgp-common-mp-srte-policy-ipv6-group { - description - "Grouping for SR-TE for AFI 2"; - - container srte-policy-ipv6 { - when "../afi-safi-name = 'oc-bgp-types:SRTE_POLICY_IPV6'" { - description - "Only include this container when the address family is - specified to be SR-TE Policy SAFI for the IPv6 unicast - address family."; - } - - description - "Configuration and operational state parameters relating to - the SR-TE Policy SAFI for IPv6 Unicast."; - - uses bgp-common-mp-all-afi-safi-common; - } - } - - // Config groupings for common groups - grouping bgp-common-mp-all-afi-safi-common-prefix-limit-config { - description - "Configuration parameters relating to prefix-limits for an - AFI-SAFI"; - - leaf max-prefixes { - type uint32; - description - "Maximum number of prefixes that will be accepted - from the neighbour"; - } - - leaf prevent-teardown { - type boolean; - default false; - description - "Do not tear down the BGP session when the maximum - prefix limit is exceeded, but rather only log a - warning. The default of this leaf is false, such - that when it is not specified, the session is torn - down."; - } - - leaf warning-threshold-pct { - type oc-types:percentage; - description - "Threshold on number of prefixes that can be received - from a neighbour before generation of warning messages - or log entries. Expressed as a percentage of - max-prefixes"; - } - - leaf restart-timer { - type decimal64 { - fraction-digits 2; - } - units "seconds"; - description - "Time interval in seconds after which the BGP session - is re-established after being torn down due to exceeding - the max-prefix limit."; - } - } - - grouping bgp-common-mp-ipv4-ipv6-unicast-common-config { - description - "Common configuration parameters for IPv4 and IPv6 Unicast - address families"; - - leaf send-default-route { - type boolean; - default "false"; - description - "If set to true, send the default-route to the neighbour(s)"; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-common-structure.yang b/src/plugins/yang/openconfig/openconfig-bgp-common-structure.yang deleted file mode 100644 index ad11db4..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-common-structure.yang +++ /dev/null @@ -1,196 +0,0 @@ -submodule openconfig-bgp-common-structure { - - belongs-to openconfig-bgp { - prefix "oc-bgp"; - } - - import openconfig-extensions { prefix oc-ext; } - - include openconfig-bgp-common-multiprotocol; - include openconfig-bgp-common; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This sub-module contains groupings that are common across multiple BGP - contexts and provide structure around other primitive groupings."; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-30" { - description - "Clarification of add-paths send-max leaf"; - reference "4.0.1"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - grouping bgp-common-structure-neighbor-group-logging-options { - description - "Structural grouping used to include error handling configuration and - state for both BGP neighbors and groups"; - - container logging-options { - description - "Logging options for events related to the BGP neighbor or - group"; - container config { - description - "Configuration parameters enabling or modifying logging - for events relating to the BGPgroup"; - uses bgp-common-neighbor-group-logging-options-config; - } - container state { - config false; - description - "State information relating to logging for the BGP neighbor - or group"; - uses bgp-common-neighbor-group-logging-options-config; - } - } - } - - grouping bgp-common-structure-neighbor-group-ebgp-multihop { - description - "Structural grouping used to include eBGP multihop configuration and - state for both BGP neighbors and peer groups"; - - container ebgp-multihop { - description - "eBGP multi-hop parameters for the BGPgroup"; - container config { - description - "Configuration parameters relating to eBGP multihop for the - BGP group"; - uses bgp-common-neighbor-group-multihop-config; - } - container state { - config false; - description - "State information for eBGP multihop, for the BGP neighbor - or group"; - uses bgp-common-neighbor-group-multihop-config; - } - } - } - - grouping bgp-common-structure-neighbor-group-route-reflector { - description - "Structural grouping used to include route reflector configuration and - state for both BGP neighbors and peer groups"; - - container route-reflector { - description - "Route reflector parameters for the BGPgroup"; - container config { - description - "Configuraton parameters relating to route reflection - for the BGPgroup"; - uses bgp-common-neighbor-group-route-reflector-config; - } - container state { - config false; - description - "State information relating to route reflection for the - BGPgroup"; - uses bgp-common-neighbor-group-route-reflector-config; - } - } - } - - grouping bgp-common-structure-neighbor-group-as-path-options { - description - "Structural grouping used to include AS_PATH manipulation configuration - and state for both BGP neighbors and peer groups"; - - container as-path-options { - description - "AS_PATH manipulation parameters for the BGP neighbor or - group"; - container config { - description - "Configuration parameters relating to AS_PATH manipulation - for the BGP peer or group"; - uses bgp-common-neighbor-group-as-path-options-config; - } - container state { - config false; - description - "State information relating to the AS_PATH manipulation - mechanisms for the BGP peer or group"; - uses bgp-common-neighbor-group-as-path-options-config; - } - } - } - - grouping bgp-common-structure-neighbor-group-add-paths { - description - "Structural grouping used to include ADD-PATHs configuration and state - for both BGP neighbors and peer groups"; - - container add-paths { - description - "Parameters relating to the advertisement and receipt of - multiple paths for a single NLRI (add-paths)"; - container config { - description - "Configuration parameters relating to ADD_PATHS"; - uses bgp-common-neighbor-group-add-paths-config; - } - container state { - config false; - description - "State information associated with ADD_PATHS"; - uses bgp-common-neighbor-group-add-paths-config; - } - } - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-common.yang b/src/plugins/yang/openconfig/openconfig-bgp-common.yang deleted file mode 100644 index 5194266..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-common.yang +++ /dev/null @@ -1,665 +0,0 @@ -submodule openconfig-bgp-common { - - belongs-to openconfig-bgp { - prefix "oc-bgp"; - } - - import openconfig-extensions { prefix oc-ext; } - import openconfig-bgp-types { prefix oc-bgp-types; } - import openconfig-routing-policy { prefix oc-rpol; } - import openconfig-types { prefix oc-types; } - import openconfig-inet-types { prefix oc-inet; } - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This sub-module contains common groupings that are common across - multiple contexts within the BGP module. That is to say that they - may be application to a subset of global, peer-group or neighbor - contexts."; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-30" { - description - "Clarification of add-paths send-max leaf"; - reference "4.0.1"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - grouping bgp-common-neighbor-group-timers-config { - description - "Config parameters related to timers associated with the BGP - peer"; - - leaf connect-retry { - type decimal64 { - fraction-digits 2; - } - default 30; - description - "Time interval in seconds between attempts to establish a - session with the peer."; - } - - leaf hold-time { - type decimal64 { - fraction-digits 2; - } - default 90; - description - "Time interval in seconds that a BGP session will be - considered active in the absence of keepalive or other - messages from the peer. The hold-time is typically - set to 3x the keepalive-interval."; - reference - "RFC 4271 - A Border Gateway Protocol 4, Sec. 10"; - } - - leaf keepalive-interval { - type decimal64 { - fraction-digits 2; - } - default 30; - description - "Time interval in seconds between transmission of keepalive - messages to the neighbor. Typically set to 1/3 the - hold-time."; - } - - leaf minimum-advertisement-interval { - type decimal64 { - fraction-digits 2; - } - default 30; - description - "Minimum time which must elapse between subsequent UPDATE - messages relating to a common set of NLRI being transmitted - to a peer. This timer is referred to as - MinRouteAdvertisementIntervalTimer by RFC 4721 and serves to - reduce the number of UPDATE messages transmitted when a - particular set of NLRI exhibit instability."; - reference - "RFC 4271 - A Border Gateway Protocol 4, Sec 9.2.1.1"; - } - } - - grouping bgp-common-neighbor-group-config { - description - "Neighbor level configuration items."; - - leaf peer-as { - type oc-inet:as-number; - description - "AS number of the peer."; - } - - leaf local-as { - type oc-inet:as-number; - description - "The local autonomous system number that is to be used - when establishing sessions with the remote peer or peer - group, if this differs from the global BGP router - autonomous system number."; - } - - leaf peer-type { - type oc-bgp-types:peer-type; - description - "Explicitly designate the peer or peer group as internal - (iBGP) or external (eBGP)."; - } - - leaf auth-password { - type oc-types:routing-password; - description - "Configures an MD5 authentication password for use with - neighboring devices."; - } - - leaf remove-private-as { - // could also make this a container with a flag to enable - // remove-private and separate option. here, option implies - // remove-private is enabled. - type oc-bgp-types:remove-private-as-option; - description - "Remove private AS numbers from updates sent to peers - when - this leaf is not specified, the AS_PATH attribute should be - sent to the peer unchanged"; - } - - leaf route-flap-damping { - type boolean; - default false; - description - "Enable route flap damping."; - } - - leaf send-community { - type oc-bgp-types:community-type; - default "NONE"; - description - "Specify which types of community should be sent to the - neighbor or group. The default is to not send the - community attribute"; - } - - leaf description { - type string; - description - "An optional textual description (intended primarily for use - with a peer or group"; - } - } - - grouping bgp-common-neighbor-group-transport-config { - description - "Configuration parameters relating to the transport protocol - used by the BGP session to the peer"; - - leaf tcp-mss { - type uint16; - description - "Sets the max segment size for BGP TCP sessions."; - } - - leaf mtu-discovery { - type boolean; - default false; - description - "Turns path mtu discovery for BGP TCP sessions on (true) - or off (false)"; - } - - leaf passive-mode { - type boolean; - default false; - description - "Wait for peers to issue requests to open a BGP session, - rather than initiating sessions from the local router."; - } - - leaf local-address { - type union { - type oc-inet:ip-address; - type string; - } - //TODO: the string should be converted to a leafref type - //to point to an interface when YANG 1.1 is available with - //leafrefs in union types. - description - "Set the local IP (either IPv4 or IPv6) address to use - for the session when sending BGP update messages. This - may be expressed as either an IP address or reference - to the name of an interface."; - } - } - - grouping bgp-common-neighbor-group-error-handling-config { - description - "Configuration parameters relating to enhanced error handling - behaviours for BGP"; - - leaf treat-as-withdraw { - type boolean; - default "false"; - description - "Specify whether erroneous UPDATE messages for which the - NLRI can be extracted are reated as though the NLRI is - withdrawn - avoiding session reset"; - reference "draft-ietf-idr-error-handling-16"; - } - } - - grouping bgp-common-neighbor-group-logging-options-config { - description - "Configuration parameters specifying the logging behaviour for - BGP sessions to the peer"; - - leaf log-neighbor-state-changes { - type boolean; - default "true"; - description - "Configure logging of peer state changes. Default is - to enable logging of peer state changes."; - } - } - - grouping bgp-common-neighbor-group-multihop-config { - description - "Configuration parameters specifying the multihop behaviour for - BGP sessions to the peer"; - - leaf enabled { - type boolean; - default "false"; - description - "When enabled the referenced group or neighbors are permitted - to be indirectly connected - including cases where the TTL - can be decremented between the BGP peers"; - } - - leaf multihop-ttl { - type uint8; - description - "Time-to-live value to use when packets are sent to the - referenced group or neighbors and ebgp-multihop is enabled"; - } - } - - grouping bgp-common-neighbor-group-route-reflector-config { - description - "Configuration parameters determining whether the behaviour of - the local system when acting as a route-reflector"; - - leaf route-reflector-cluster-id { - type oc-bgp-types:rr-cluster-id-type; - description - "route-reflector cluster id to use when local router is - configured as a route reflector. Commonly set at the group - level, but allows a different cluster - id to be set for each neighbor."; - } - - leaf route-reflector-client { - type boolean; - default "false"; - description - "Configure the neighbor as a route reflector client."; - } - } - - grouping bgp-common-neighbor-group-as-path-options-config { - description - "Configuration parameters allowing manipulation of the AS_PATH - attribute"; - - leaf allow-own-as { - type uint8; - default 0; - description - "Specify the number of occurrences of the local BGP speaker's - AS that can occur within the AS_PATH before it is rejected."; - } - - leaf replace-peer-as { - type boolean; - default "false"; - description - "Replace occurrences of the peer's AS in the AS_PATH - with the local autonomous system number"; - } - - leaf disable-peer-as-filter { - type boolean; - default "false"; - description - "When set to true, the system advertises routes to a peer - even if the peer's AS was in the AS path. The default - behavior (false) suppresses advertisements to peers if - their AS number is in the AS path of the route."; - } - } - - grouping bgp-common-neighbor-group-add-paths-config { - description - "Configuration parameters specfying whether the local system - will send or receive multiple paths using ADD_PATHS"; - - leaf receive { - type boolean; - default false; - description - "Enable capability negotiation to receive multiple path - advertisements for an NLRI from the neighbor or group"; - reference - "RFC 7911 - Advertisement of Multiple Paths in BGP"; - } - - leaf send { - type boolean; - default false; - description - "Enable capability negotiation to send multiple path - advertisements for an NLRI from the neighbor or group"; - reference - "RFC 7911 - Advertisement of Multiple Paths in BGP"; - } - - leaf send-max { - type uint8; - description - "The maximum total number of paths to advertise to neighbors - for a single NLRI. This includes the single best path as - well as additional paths advertised when add-paths is - enabled."; - } - - leaf eligible-prefix-policy { - type leafref { - path "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:name"; - } - description - "A reference to a routing policy which can be used to - restrict the prefixes for which add-paths is enabled"; - } - } - - grouping bgp-common-graceful-restart-config { - description - "Configuration parameters relating to BGP graceful restart."; - - leaf enabled { - type boolean; - description - "Enable or disable the graceful-restart capability."; - } - - leaf restart-time { - type uint16 { - range 0..4096; - } - description - "Estimated time (in seconds) for the local BGP speaker to - restart a session. This value is advertise in the graceful - restart BGP capability. This is a 12-bit value, referred to - as Restart Time in RFC4724. Per RFC4724, the suggested - default value is <= the hold-time value."; - } - - leaf stale-routes-time { - type decimal64 { - fraction-digits 2; - } - description - "An upper-bound on the time thate stale routes will be - retained by a router after a session is restarted. If an - End-of-RIB (EOR) marker is received prior to this timer - expiring stale-routes will be flushed upon its receipt - if - no EOR is received, then when this timer expires stale paths - will be purged. This timer is referred to as the - Selection_Deferral_Timer in RFC4724"; - } - - leaf helper-only { - type boolean; - description - "Enable graceful-restart in helper mode only. When this - leaf is set, the local system does not retain forwarding - its own state during a restart, but supports procedures - for the receiving speaker, as defined in RFC4724."; - } - } - - grouping bgp-common-use-multiple-paths-config { - description - "Generic configuration options relating to use of multiple - paths for a referenced AFI-SAFI, group or neighbor"; - - leaf enabled { - type boolean; - default false; - description - "Whether the use of multiple paths for the same NLRI is - enabled for the neighbor. This value is overridden by - any more specific configuration value."; - } - } - - grouping bgp-common-use-multiple-paths-ebgp-as-options-config { - description - "Configuration parameters specific to eBGP multipath applicable - to all contexts"; - - leaf allow-multiple-as { - type boolean; - default "false"; - description - "Allow multipath to use paths from different neighbouring - ASes. The default is to only consider multiple paths from - the same neighbouring AS."; - } - } - - grouping bgp-common-global-group-use-multiple-paths { - description - "Common grouping used for both global and groups which provides - configuration and state parameters relating to use of multiple - paths"; - - container use-multiple-paths { - description - "Parameters related to the use of multiple paths for the - same NLRI"; - - container config { - description - "Configuration parameters relating to multipath"; - uses bgp-common-use-multiple-paths-config; - } - container state { - config false; - description - "State parameters relating to multipath"; - uses bgp-common-use-multiple-paths-config; - } - - container ebgp { - description - "Multipath parameters for eBGP"; - container config { - description - "Configuration parameters relating to eBGP multipath"; - uses bgp-common-use-multiple-paths-ebgp-config; - } - container state { - config false; - description - "State information relating to eBGP multipath"; - uses bgp-common-use-multiple-paths-ebgp-config; - } - } - - container ibgp { - description - "Multipath parameters for iBGP"; - container config { - description - "Configuration parameters relating to iBGP multipath"; - uses bgp-common-use-multiple-paths-ibgp-config; - } - container state { - config false; - description - "State information relating to iBGP multipath"; - uses bgp-common-use-multiple-paths-ibgp-config; - } - } - } - } - - grouping bgp-common-use-multiple-paths-ebgp-config { - description - "Configuration parameters relating to multipath for eBGP"; - - leaf allow-multiple-as { - type boolean; - default "false"; - description - "Allow multipath to use paths from different neighbouring - ASes. The default is to only consider multiple paths from - the same neighbouring AS."; - } - - leaf maximum-paths { - type uint32; - default 1; - description - "Maximum number of parallel paths to consider when using - BGP multipath. The default is use a single path."; - } - } - - grouping bgp-common-use-multiple-paths-ibgp-config { - description - "Configuration parmaeters relating to multipath for iBGP"; - - leaf maximum-paths { - type uint32; - default 1; - description - "Maximum number of parallel paths to consider when using - iBGP multipath. The default is to use a single path"; - } - } - - grouping bgp-common-route-selection-options-config { - description - "Set of configuration options that govern best - path selection."; - - leaf always-compare-med { - type boolean; - default "false"; - description - "Compare multi-exit discriminator (MED) value from - different ASes when selecting the best route. The - default behavior is to only compare MEDs for paths - received from the same AS."; - } - - leaf ignore-as-path-length { - type boolean; - default "false"; - description - "Ignore the AS path length when selecting the best path. - The default is to use the AS path length and prefer paths - with shorter length."; - } - - leaf external-compare-router-id { - type boolean; - default "true"; - description - "When comparing similar routes received from external - BGP peers, use the router-id as a criterion to select - the active path."; - } - - leaf advertise-inactive-routes { - type boolean; - default "false"; - description - "Advertise inactive routes to external peers. The - default is to only advertise active routes."; - } - - leaf enable-aigp { - type boolean; - default false; - description - "Flag to enable sending / receiving accumulated IGP - attribute in routing updates"; - } - - leaf ignore-next-hop-igp-metric { - type boolean; - default "false"; - description - "Ignore the IGP metric to the next-hop when calculating - BGP best-path. The default is to select the route for - which the metric to the next-hop is lowest"; - } - } - - grouping bgp-common-route-selection-options { - description - "Configuration and state relating to route selection options"; - - container route-selection-options { - description - "Parameters relating to options for route selection"; - container config { - description - "Configuration parameters relating to route selection - options"; - uses bgp-common-route-selection-options-config; - } - container state { - config false; - description - "State information for the route selection options"; - uses bgp-common-route-selection-options-config; - } - } - } - - grouping bgp-common-state { - description - "Grouping containing common counters relating to prefixes and - paths"; - - leaf total-paths { - type uint32; - description - "Total number of BGP paths within the context"; - } - - leaf total-prefixes { - type uint32; - description - "Total number of BGP prefixes received within the context"; - } - } - - -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-errors.yang b/src/plugins/yang/openconfig/openconfig-bgp-errors.yang deleted file mode 100644 index f53a932..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-errors.yang +++ /dev/null @@ -1,421 +0,0 @@ -submodule openconfig-bgp-errors { - - belongs-to openconfig-bgp-types { - prefix "oc-bgp-types"; - } - - import openconfig-extensions { prefix "oc-ext"; } - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module defines BGP NOTIFICATION message error codes - and subcodes"; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-30" { - description - "Clarification of add-paths send-max leaf"; - reference "4.0.1"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - identity BGP_ERROR_CODE { - description - "Indicates the error type in a BGP NOTIFICATION message"; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - - identity BGP_ERROR_SUBCODE { - description - "Provides more specific information about the nature of the - error reported in a NOTIFICATION message. Each Error - Code may have one or more Error Subcodes associated with it."; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - - - identity UNSPECIFIC { - base BGP_ERROR_SUBCODE; - description - "The error subcode field is unspecific when the NOTIFICATION - message does not include any specific error subcode (i.e.., - value 0)."; - } - - identity MESSAGE_HEADER_ERROR { - base BGP_ERROR_CODE; - description - "Errors detected while processing the Message Header"; - } - - identity OPEN_MESSAGE_ERROR { - base BGP_ERROR_CODE; - description - "Errors detected while processing the OPEN message"; - } - - identity UPDATE_MESSAGE_ERROR { - base BGP_ERROR_CODE; - description - "Errors detected while processing the UPDATE message"; - } - - identity HOLD_TIMER_EXPIRED { - base BGP_ERROR_CODE; - description - "Indicates that the system did not receive successive - KEEPALIVE, UPDATE, and/or NOTIFICATION messages within the - period specified in the Hold Time field of the OPEN message"; - } - - identity FINITE_STATE_MACHINE_ERROR { - base BGP_ERROR_CODE; - description - "Error detected by the BGP Finite State Machine - (e.g., receipt of an unexpected event)"; - } - - identity CEASE { - base BGP_ERROR_CODE; - description - "Sent by a BGP peer to close its BGP connection in absence of - any fatal errors. If the BGP speaker terminates its - connection with a neihbor because the number of prefixes - received exceeds the configured upper bound, the speaker must - send the neighbor a NOTIFICATION message with the Cease - error code."; - } - - identity ROUTE_REFRESH_MESSAGE_ERROR { - base BGP_ERROR_CODE; - description - "The length, excluding the fixed-size message header, of the - received ROUTE-REFRESH message with Message Subtype 1 and 2 is - not 4. Applicable only when a BGP speaker has received the - 'Enhanced Route Refresh Capability' from a peer"; - reference - "RFC 7313 - Enhanced Route Refresh Capability for BGP-4"; - } - - identity MESSAGE_HEADER_SUBCODE { - base BGP_ERROR_SUBCODE; - description - "Error subcode definitions for Message Header error - notifications"; - } - - identity CONNECTION_NOT_SYNCHRONIZED { - base MESSAGE_HEADER_SUBCODE; - description - "Marker field of the message header is not all ones as - expected"; - } - - identity BAD_MESSAGE_LENGTH { - base MESSAGE_HEADER_SUBCODE; - description - "Indicates the message has an erroneous length with one - or more of the following: - - - the Length field of the message header is less than 19 or - greater than 4096 - - - the Length field of an OPEN message is less than the minimum - length of the OPEN message - - - the Length field of an UPDATE message is less than the - minimum length of the UPDATE message - - - the Length field of a KEEPALIVE message is not equal to 19 - - - the Length field of a NOTIFICATION message is less than the - minimum length of the NOTIFICATION message - - The erroneous Length field must be reported in the - NOTIFICATION data."; - } - - identity BAD_MESSAGE_TYPE { - base MESSAGE_HEADER_SUBCODE; - description - "Type field of the message header is not recognized. The - erroneous type field must be reported in the NOTIFICATION - data"; - } - - identity OPEN_MESSAGE_SUBCODE { - base BGP_ERROR_SUBCODE; - description - "Error subcode definitions for OPEN message error - notifications"; - } - - identity UNSUPPORTED_VERSION_NUMBER { - base OPEN_MESSAGE_SUBCODE; - description - "Version number in the Version field of the received OPEN - message is not supported"; - } - - identity BAD_PEER_AS { - base OPEN_MESSAGE_SUBCODE; - description - "Autonomous System field of the OPEN message is unacceptable"; - } - - identity BAD_BGP_IDENTIFIER { - base OPEN_MESSAGE_SUBCODE; - description - "BGP Identifier field of the OPEN message is syntactically - incorrect"; - } - - identity UNSUPPORTED_OPTIONAL_PARAMETER { - base OPEN_MESSAGE_SUBCODE; - description - "One of the Optional Parameters in the OPEN message is not - recognized"; - } - - identity UNACCEPTABLE_HOLD_TIME { - base OPEN_MESSAGE_SUBCODE; - description - "Hold Time field of the OPEN message is unacceptable"; - } - - identity UNSUPPORTED_CAPABILITY { - base OPEN_MESSAGE_SUBCODE; - description - "Inidicates that the peer does not support capabilities - advertisement -- the peer may send this subcode in response to - an OPEN message that carries the Capabilities Optional - Parameter"; - reference - "RFC 5492 - Capabilities Advertisement with BGP-4"; - } - - identity UPDATE_MESSAGE_SUBCODE { - base BGP_ERROR_SUBCODE; - description - "Error subcode definitions for UPDATE message error - notifications"; - } - - identity MALFORMED_ATTRIBUTE_LIST { - base UPDATE_MESSAGE_SUBCODE; - description - "Inidicates Withdrawn Routes Length or Total Attribute Length - is too large, or - - An attribute appears more than once in the UPDATE message"; - } - - identity UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE { - base UPDATE_MESSAGE_SUBCODE; - description - "One or more of the well-known mandatory attributes are not - recognized"; - } - - identity MISSING_WELL_KNOWN_ATTRIBUTE { - base UPDATE_MESSAGE_SUBCODE; - description - "One or more of the well-known mandatory attributes are not - present"; - } - - identity ATTRIBUTE_FLAGS_ERROR { - base UPDATE_MESSAGE_SUBCODE; - description - "Attribute has Attribute Flags that conflict with the - Attribute Type Code"; - } - - identity ATTRIBUTE_LENGTH_ERROR { - base UPDATE_MESSAGE_SUBCODE; - description - "Attribute has an Attribute Length that conflicts with the - expected length (based on the attribute type code)"; - } - - identity INVALID_ORIGIN_ATTRIBUTE { - base UPDATE_MESSAGE_SUBCODE; - description - "ORIGIN attribute has an undefined value"; - } - - identity INVALID_NEXT_HOP_ATTRIBUTE { - base UPDATE_MESSAGE_SUBCODE; - description - "The NEXT_HOP attribute field is syntactically incorrect"; - } - - identity OPTIONAL_ATTRIBUTE_ERROR { - base UPDATE_MESSAGE_SUBCODE; - description - "An error is detected in the value of a recognized optional - attribute (such an attribute must be discarded)"; - } - - identity INVALID_NETWORK_FIELD { - base UPDATE_MESSAGE_SUBCODE; - description - "The NLRI field in the UPDATE message is syntactically - incorrect"; - } - - identity MALFORMED_AS_PATH { - base UPDATE_MESSAGE_SUBCODE; - description - "The AS_PATH attribute is syntactically incorrect"; - } - - identity FINITE_STATE_MACHINE_SUBCODE { - base BGP_ERROR_SUBCODE; - description - "Error subcode definitions for BGP finite state machine - errors."; - reference - "RFC 6608 - Subcodes for BGP Finite State Machine Error"; - } - - identity RECEIVE_UNEXPECTED_MESSAGE_OPENSENT { - base FINITE_STATE_MACHINE_SUBCODE; - description - "The peer BGP speaker received an unexpected message from - the local system while the peer speaker session was in the - OpenSent state"; - } - - identity RECEIVE_UNEXPECTED_MESSAGE_OPENCONFIRM { - base FINITE_STATE_MACHINE_SUBCODE; - description - "The peer BGP speaker received an unexpected message from - the local system while the peer speaker session was in the - OpenConfirm state"; - } - - identity RECEIVE_UNEXPECTED_MESSAGE_ESTABLISHED { - base FINITE_STATE_MACHINE_SUBCODE; - description - "The peer BGP speaker received an unexpected message from - the local system while the peer speaker session was in the - Established state"; - } - - identity CEASE_SUBCODE { - base BGP_ERROR_SUBCODE; - description - "Error subcode definitions for Cease notification messages"; - reference - "RFC 4486 - Subcodes for BGP Cease Notification Message"; - } - - identity MAX_NUM_PREFIXES_REACHED { - base CEASE_SUBCODE; - description - "The peer BGP speaker terminated its peering with the local - system because the number of address prefixes received - exceeds a locally configured upper bound"; - } - - identity ADMINISTRATIVE_SHUTDOWN { - base CEASE_SUBCODE; - description - "The peer BGP speaker administratively shut down its peering - with the local system"; - } - - identity PEER_DE_CONFIGURED { - base CEASE_SUBCODE; - description - "The peer BGP speaker de-configure the peering with the local - system"; - } - - identity ADMINISTRATIVE_RESET { - base CEASE_SUBCODE; - description - "The peer BGP speaker administratively reset the peering with - the local system"; - } - - identity CONNECTION_REJECTED { - base CEASE_SUBCODE; - description - "The peer BGP speaker disallowed the BGP connection to the - local system after the peer speaker accepted a transport - protocol connection"; - } - - identity OTHER_CONFIG_CHANGE { - base CEASE_SUBCODE; - description - "The peer BGP speaker administratively reset the peering with - the local sytem due to a configuration change that is not - covered by another subcode."; - } - - identity CONN_COLLISION_RESOLUTION { - base CEASE_SUBCODE; - description - "The peer BGP speaker sent a CEASE NOTIFICATION as a result of - the collision resolution procedure described in RFC 4271"; - } - - identity OUT_OF_RESOURCES { - base CEASE_SUBCODE; - description - "The peer BGP speaker ran out of resources (e.g., memory) and - reset the session with the local system"; - } - - identity ROUTE_REFRESH_SUBCODE { - base BGP_ERROR_SUBCODE; - description - "Error subcode definitions for the ROUTE-REFRESH message - error"; - } - - identity INVALID_MESSAGE_LENGTH { - base ROUTE_REFRESH_SUBCODE; - description - "The length, excluding the fixed-size message header, of the - received ROUTE-REFRESH message with Message Subtype 1 and 2 - is not 4"; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-global.yang b/src/plugins/yang/openconfig/openconfig-bgp-global.yang deleted file mode 100644 index 643fba1..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-global.yang +++ /dev/null @@ -1,389 +0,0 @@ -submodule openconfig-bgp-global { - - belongs-to openconfig-bgp { - prefix "oc-bgp"; - } - - import openconfig-extensions { prefix oc-ext; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-inet-types { prefix oc-inet; } - - // Include common submodules - include openconfig-bgp-common; - include openconfig-bgp-common-multiprotocol; - include openconfig-bgp-peer-group; - include openconfig-bgp-common-structure; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This sub-module contains groupings that are specific to the - global context of the OpenConfig BGP module"; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - grouping bgp-global-config { - description - "Global configuration options for the BGP router."; - - leaf as { - type oc-inet:as-number; -// mandatory true; - description - "Local autonomous system number of the router. Uses - the 32-bit as-number type from the model in RFC 6991."; - } - - leaf router-id { - type oc-yang:dotted-quad; - description - "Router id of the router - an unsigned 32-bit integer - expressed in dotted quad notation."; - reference - "RFC4271 - A Border Gateway Protocol 4 (BGP-4), - Section 4.2"; - } - } - - grouping bgp-global-state { - description - "Operational state parameters for the BGP neighbor"; - - uses bgp-common-state; - } - - grouping bgp-global-default-route-distance-config { - description - "Configuration options relating to the administrative distance - (or preference) assigned to routes received from different - sources (external, internal, and local)."; - - leaf external-route-distance { - type uint8 { - range "1..255"; - } - description - "Administrative distance for routes learned from external - BGP (eBGP)."; - } - leaf internal-route-distance { - type uint8 { - range "1..255"; - } - description - "Administrative distance for routes learned from internal - BGP (iBGP)."; - } - } - - grouping bgp-global-confederation-config { - description - "Configuration options specifying parameters when the local - router is within an autonomous system which is part of a BGP - confederation."; - - leaf identifier { - type oc-inet:as-number; - description - "Confederation identifier for the autonomous system. - Setting the identifier indicates that the local-AS is part - of a BGP confederation."; - } - - leaf-list member-as { - type oc-inet:as-number; - description - "Remote autonomous systems that are to be treated - as part of the local confederation."; - } - } - - grouping bgp-global-dynamic-neighbors { - description - "Grouping containing configuration relating to dynamic peers."; - - container dynamic-neighbor-prefixes { - description - "A list of IP prefixes from which the system should: - - Accept connections to the BGP daemon - - Dynamically configure a BGP neighbor corresponding to the - source address of the remote system, using the parameters - of the specified peer-group. - For such neighbors, an entry within the neighbor list should - be created, indicating that the peer was dynamically - configured, and referencing the peer-group from which the - configuration was derived."; - - list dynamic-neighbor-prefix { - key "prefix"; - description - "An individual prefix from which dynamic neighbor - connections are allowed."; - - leaf prefix { - type leafref { - path "../config/prefix"; - } - description - "Reference to the IP prefix from which source connections - are allowed for the dynamic neighbor group."; - } - - container config { - description - "Configuration parameters relating to the source prefix - for the dynamic BGP neighbor connections."; - - uses bgp-global-dynamic-neighbor-config; - } - - container state { - config false; - description - "Operational state parameters relating to the source - prefix for the dynamic BGP neighbor connections."; - - uses bgp-global-dynamic-neighbor-config; - } - } - } - } - - grouping bgp-global-dynamic-neighbor-config { - description - "Configuration parameters relating to an individual prefix from - which dynamic neighbors are accepted."; - - leaf prefix { - type oc-inet:ip-prefix; - description - "The IP prefix within which the source address of the remote - BGP speaker must fall to be considered eligible to the - dynamically configured."; } - - leaf peer-group { - type leafref { - // At bgp/global/dynamic-neighbor-prefixes/dynamic-neighbor - // prefix/config/peer-group - path "../../../../../peer-groups/peer-group/config/" + - "peer-group-name"; - } - description - "The peer-group within which the dynamic neighbor will be - configured. The configuration parameters used for the dynamic - neighbor are those specified within the referenced peer - group."; - } - } - - grouping bgp-global-mp-all-afi-safi-list-contents { - description - "A grouping used for contents of the list of AFI-SAFI - entries at the global BGP level."; - - // import and export policy included for the afi/safi - - uses bgp-common-mp-ipv4-unicast-group; - uses bgp-common-mp-ipv6-unicast-group; - uses bgp-common-mp-ipv4-labeled-unicast-group; - uses bgp-common-mp-ipv6-labeled-unicast-group; - uses bgp-common-mp-l3vpn-ipv4-unicast-group; - uses bgp-common-mp-l3vpn-ipv6-unicast-group; - uses bgp-common-mp-l3vpn-ipv4-multicast-group; - uses bgp-common-mp-l3vpn-ipv6-multicast-group; - uses bgp-common-mp-l2vpn-vpls-group; - uses bgp-common-mp-l2vpn-evpn-group; - uses bgp-common-mp-srte-policy-ipv4-group; - uses bgp-common-mp-srte-policy-ipv6-group; - } - - grouping bgp-global-afi-safi-list { - description - "List of address-families associated with the BGP instance"; - - list afi-safi { - key "afi-safi-name"; - - description - "AFI,SAFI configuration available for the - neighbour or group"; - - leaf afi-safi-name { - type leafref { - path "../config/afi-safi-name"; - } - description - "Reference to the AFI-SAFI name used as a key - for the AFI-SAFI list"; - } - - container config { - description - "Configuration parameters for the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; - } - container state { - config false; - description - "State information relating to the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; - uses bgp-common-state; - } - - container graceful-restart { - description - "Parameters relating to BGP graceful-restart"; - container config { - description - "Configuration options for BGP graceful-restart"; - uses bgp-common-mp-afi-safi-graceful-restart-config; - } - container state { - config false; - description - "State information for BGP graceful-restart"; - uses bgp-common-mp-afi-safi-graceful-restart-config; - } - } - - uses bgp-common-route-selection-options; - uses bgp-common-global-group-use-multiple-paths; - uses bgp-common-structure-neighbor-group-add-paths; - uses bgp-global-mp-all-afi-safi-list-contents; - } - } - - // Structural groupings - grouping bgp-global-base { - description - "Global configuration parameters for the BGP router"; - - container config { - description - "Configuration parameters relating to the global BGP router"; - uses bgp-global-config; - } - container state { - config false; - description - "State information relating to the global BGP router"; - uses bgp-global-config; - uses bgp-global-state; - } - - container default-route-distance { - description - "Administrative distance (or preference) assigned to - routes received from different sources - (external, internal, and local)."; - - container config { - description - "Configuration parameters relating to the default route - distance"; - uses bgp-global-default-route-distance-config; - } - container state { - config false; - description - "State information relating to the default route distance"; - uses bgp-global-default-route-distance-config; - } - } - - container confederation { - description - "Parameters indicating whether the local system acts as part - of a BGP confederation"; - - container config { - description - "Configuration parameters relating to BGP confederations"; - uses bgp-global-confederation-config; - } - container state { - config false; - description - "State information relating to the BGP confederations"; - uses bgp-global-confederation-config; - } - } - - container graceful-restart { - description - "Parameters relating the graceful restart mechanism for BGP"; - container config { - description - "Configuration parameters relating to graceful-restart"; - uses bgp-common-graceful-restart-config; - } - container state { - config false; - description - "State information associated with graceful-restart"; - uses bgp-common-graceful-restart-config; - } - } - - uses bgp-common-global-group-use-multiple-paths; - uses bgp-common-route-selection-options; - - container afi-safis { - description - "Address family specific configuration"; - uses bgp-global-afi-safi-list; - } - - uses bgp-global-dynamic-neighbors; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-neighbor.yang b/src/plugins/yang/openconfig/openconfig-bgp-neighbor.yang deleted file mode 100644 index f7ae33b..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-neighbor.yang +++ /dev/null @@ -1,704 +0,0 @@ -submodule openconfig-bgp-neighbor { - - belongs-to openconfig-bgp { - prefix "oc-bgp"; - } - - import openconfig-extensions { prefix oc-ext; } - import openconfig-routing-policy { prefix oc-rpol; } - import openconfig-types { prefix oc-types; } - import openconfig-bgp-types { prefix oc-bgp-types; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-yang-types { prefix oc-yang; } - - // Include the common submodule - include openconfig-bgp-common; - include openconfig-bgp-common-multiprotocol; - include openconfig-bgp-peer-group; - include openconfig-bgp-common-structure; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This sub-module contains groupings that are specific to the - neighbor context of the OpenConfig BGP module."; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-30" { - description - "Clarification of add-paths send-max leaf"; - reference "4.0.1"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - grouping bgp-neighbor-config { - description - "Configuration parameters relating to a base BGP neighbor that - are not also applicable to any other context - (e.g., peer group)"; - - leaf peer-group { - type leafref { - path "../../../../peer-groups/peer-group/peer-group-name"; - } - description - "The peer-group with which this neighbor is associated"; - } - - leaf neighbor-address { - type oc-inet:ip-address; - description - "Address of the BGP peer, either in IPv4 or IPv6"; - } - - leaf enabled { - type boolean; - default true; - description - "Whether the BGP peer is enabled. In cases where the - enabled leaf is set to false, the local system should not - initiate connections to the neighbor, and should not - respond to TCP connections attempts from the neighbor. If - the state of the BGP session is ESTABLISHED at the time - that this leaf is set to false, the BGP session should be - ceased."; - } - } - - grouping bgp-neighbor-use-multiple-paths { - description - "Multipath configuration and state applicable to a BGP - neighbor"; - - container use-multiple-paths { - description - "Parameters related to the use of multiple-paths for the same - NLRI when they are received only from this neighbor"; - - container config { - description - "Configuration parameters relating to multipath"; - uses bgp-common-use-multiple-paths-config; - } - container state { - config false; - description - "State parameters relating to multipath"; - uses bgp-common-use-multiple-paths-config; - } - - container ebgp { - description - "Multipath configuration for eBGP"; - container config { - description - "Configuration parameters relating to eBGP multipath"; - uses bgp-common-use-multiple-paths-ebgp-as-options-config; - } - container state { - config false; - description - "State information relating to eBGP multipath"; - uses bgp-common-use-multiple-paths-ebgp-as-options-config; - } - } - } - } - - grouping bgp-neighbor-state { - description - "Operational state parameters relating only to a BGP neighbor"; - - leaf session-state { - type enumeration { - enum IDLE { - description - "neighbor is down, and in the Idle state of the - FSM"; - } - enum CONNECT { - description - "neighbor is down, and the session is waiting for - the underlying transport session to be established"; - } - enum ACTIVE { - description - "neighbor is down, and the local system is awaiting - a conncetion from the remote peer"; - } - enum OPENSENT { - description - "neighbor is in the process of being established. - The local system has sent an OPEN message"; - } - enum OPENCONFIRM { - description - "neighbor is in the process of being established. - The local system is awaiting a NOTIFICATION or - KEEPALIVE message"; - } - enum ESTABLISHED { - description - "neighbor is up - the BGP session with the peer is - established"; - } - } - description - "Operational state of the BGP peer"; - } - - leaf last-established { - type oc-types:timeticks64; - description - "This timestamp indicates the time that the - BGP session last transitioned in or out of the Established - state. The value is the timestamp in seconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC). - - The BGP session uptime can be computed by clients as the - difference between this value and the current time in UTC - (assuming the session is in the ESTABLISHED state, per the - session-state leaf)."; - } - - leaf established-transitions { - type oc-yang:counter64; - description - "Number of transitions to the Established state for - the neighbor session. This value is analogous to the - bgpPeerFsmEstablishedTransitions object from the standard - BGP-4 MIB"; - reference - "RFC 4273 - Definitions of Managed Objects for BGP-4"; - } - - leaf-list supported-capabilities { - type identityref { - base oc-bgp-types:BGP_CAPABILITY; - } - description - "BGP capabilities negotiated as supported with the peer"; - } - - container messages { - description - "Counters for BGP messages sent and received from the - neighbor"; - container sent { - description - "Counters relating to BGP messages sent to the neighbor"; - uses bgp-neighbor-counters-message-types-state; - } - - container received { - description - "Counters for BGP messages received from the neighbor"; - uses bgp-neighbor-counters-message-types-state; - } - } - - container queues { - description - "Counters related to queued messages associated with the - BGP neighbor"; - uses bgp-neighbor-queue-counters-state; - } - - leaf dynamically-configured { - type boolean; - default false; - description - "When this leaf is set to true, the peer was configured dynamically - due to an inbound connection request from a specified source prefix - within a dynamic-neighbor-prefix."; - } - } - - grouping bgp-neighbor-counters-message-types-state { - description - "Grouping of BGP message types, included for re-use - across counters"; - - leaf UPDATE { - type uint64; - description - "Number of BGP UPDATE messages announcing, withdrawing - or modifying paths exchanged."; - } - - leaf NOTIFICATION { - type uint64; - description - "Number of BGP NOTIFICATION messages indicating an - error condition has occurred exchanged."; - } - - leaf last-notification-time { - type oc-types:timeticks64; - description - "This timestamp indicates the time that a NOTIFICATION - message was sent or received on the peering session - (based on whether this leaf is associated with - sent or received messages). - - The value is the timestamp in seconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - } - - leaf last-notification-error-code { - type identityref { - base oc-bgp-types:BGP_ERROR_CODE; - } - description - "Indicates the last BGP error sent or received on the peering - session (based on whether this leaf is associated with - sent or received messages)."; - } - - leaf last-notification-error-subcode { - type identityref { - base oc-bgp-types:BGP_ERROR_SUBCODE; - } - description - "Indicates the last BGP error subcode sent or received on - the peering session (based on whether this leaf is associated - with sent or received messages)"; - } - } - - grouping bgp-neighbor-queue-counters-state { - description - "Counters relating to the message queues associated with the - BGP peer"; - - leaf input { - type uint32; - description - "The number of messages received from the peer currently - queued"; - } - - leaf output { - type uint32; - description - "The number of messages queued to be sent to the peer"; - } - } - - grouping bgp-neighbor-transport-state { - description - "Operational state parameters relating to the transport session - used for the BGP session"; - - leaf local-port { - type oc-inet:port-number; - description - "Local TCP port being used for the TCP session supporting - the BGP session"; - } - - leaf remote-address { - type oc-inet:ip-address; - description - "Remote address to which the BGP session has been - established"; - } - - leaf remote-port { - type oc-inet:port-number; - description - "Remote port being used by the peer for the TCP session - supporting the BGP session"; - } - } - - grouping bgp-neighbor-error-handling-state { - description - "Operational state parameters relating to enhanced error - error handling for BGP"; - - leaf erroneous-update-messages { - type uint32; - description - "The number of BGP UPDATE messages for which the - treat-as-withdraw mechanism has been applied based - on erroneous message contents"; - } - } - - grouping bgp-neighbor-timers-state { - description - "Operational state parameters relating to BGP timers associated - with the BGP session"; - - leaf negotiated-hold-time { - type decimal64 { - fraction-digits 2; - } - description - "The negotiated hold-time for the BGP session"; - } - } - - grouping bgp-neighbor-afi-safi-graceful-restart-state { - description - "Operational state variables relating to the graceful-restart - mechanism on a per-AFI-SAFI basis"; - - leaf received { - type boolean; - description - "This leaf indicates whether the neighbor advertised the - ability to support graceful-restart for this AFI-SAFI"; - } - - leaf advertised { - type boolean; - description - "This leaf indicates whether the ability to support - graceful-restart has been advertised to the peer"; - } - } - - grouping bgp-neighbor-graceful-restart-state { - description - "Operational state information relevant to graceful restart - for BGP"; - - leaf peer-restart-time { - type uint16 { - range 0..4096; - } - description - "The period of time (advertised by the peer) that - the peer expects a restart of a BGP session to - take"; - } - - leaf peer-restarting { - type boolean; - description - "This flag indicates whether the remote neighbor is currently - in the process of restarting, and hence received routes are - currently stale"; - } - - leaf local-restarting { - type boolean; - description - "This flag indicates whether the local neighbor is currently - restarting. The flag is unset after all NLRI have been - advertised to the peer, and the End-of-RIB (EOR) marker has - been unset"; - } - - leaf mode { - type enumeration { - enum HELPER_ONLY { - description - "The local router is operating in helper-only mode, and - hence will not retain forwarding state during a local - session restart, but will do so during a restart of the - remote peer"; - } - enum BILATERAL { - description - "The local router is operating in both helper mode, and - hence retains forwarding state during a remote restart, - and also maintains forwarding state during local session - restart"; - } - enum REMOTE_HELPER { - description - "The local system is able to retain routes during restart - but the remote system is only able to act as a helper"; - } - } - description - "Ths leaf indicates the mode of operation of BGP graceful - restart with the peer"; - } - } - - grouping bgp-neighbor-afi-safi-state { - description - "Operational state parameters relating to an individual AFI, - SAFI for a neighbor"; - - leaf active { - type boolean; - description - "This value indicates whether a particular AFI-SAFI has - been succesfully negotiated with the peer. An AFI-SAFI - may be enabled in the current running configuration, but a - session restart may be required in order to negotiate the new - capability."; - } - - container prefixes { - description "Prefix counters for the BGP session"; - leaf received { - type uint32; - description - "The number of prefixes received from the neighbor"; - } - - leaf sent { - type uint32; - description - "The number of prefixes advertised to the neighbor"; - } - - leaf installed { - type uint32; - description - "The number of advertised prefixes installed in the - Loc-RIB"; - } - } - } - - grouping bgp-neighbor-afi-safi-list { - description - "List of address-families associated with the BGP neighbor"; - - list afi-safi { - key "afi-safi-name"; - - description - "AFI,SAFI configuration available for the - neighbour or group"; - - - leaf afi-safi-name { - type leafref { - path "../config/afi-safi-name"; - } - description - "Reference to the AFI-SAFI name used as a key - for the AFI-SAFI list"; - } - - container config { - description - "Configuration parameters for the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; - } - container state { - config false; - description - "State information relating to the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; - uses bgp-neighbor-afi-safi-state; - } - - - container graceful-restart { - description - "Parameters relating to BGP graceful-restart"; - container config { - description - "Configuration options for BGP graceful-restart"; - uses bgp-common-mp-afi-safi-graceful-restart-config; - } - container state { - config false; - description - "State information for BGP graceful-restart"; - uses bgp-common-mp-afi-safi-graceful-restart-config; - uses bgp-neighbor-afi-safi-graceful-restart-state; - } - } - - uses bgp-common-structure-neighbor-group-add-paths; - uses bgp-common-mp-all-afi-safi-list-contents; - uses bgp-neighbor-use-multiple-paths; - } - } - - grouping bgp-neighbor-base { - description - "Parameters related to a BGP neighbor"; - - container config { - description - "Configuration parameters relating to the BGP neighbor or - group"; - uses bgp-neighbor-config; - uses bgp-common-neighbor-group-config; - } - container state { - config false; - description - "State information relating to the BGP neighbor"; - uses bgp-neighbor-config; - uses bgp-common-neighbor-group-config; - uses bgp-neighbor-state; - } - - container timers { - description - "Timers related to a BGP neighbor"; - container config { - description - "Configuration parameters relating to timers used for the - BGP neighbor"; - uses bgp-common-neighbor-group-timers-config; - } - container state { - config false; - description - "State information relating to the timers used for the BGP - neighbor"; - uses bgp-common-neighbor-group-timers-config; - uses bgp-neighbor-timers-state; - } - } - - container transport { - description - "Transport session parameters for the BGP neighbor"; - container config { - description - "Configuration parameters relating to the transport - session(s) used for the BGP neighbor"; - uses bgp-common-neighbor-group-transport-config; - } - container state { - config false; - description - "State information relating to the transport session(s) - used for the BGP neighbor"; - uses bgp-common-neighbor-group-transport-config; - uses bgp-neighbor-transport-state; - } - } - - container error-handling { - description - "Error handling parameters used for the BGP neighbor or - group"; - container config { - description - "Configuration parameters enabling or modifying the - behavior or enhanced error handling mechanisms for the BGP - neighbor"; - uses bgp-common-neighbor-group-error-handling-config; - } - container state { - config false; - description - "State information relating to enhanced error handling - mechanisms for the BGP neighbor"; - uses bgp-common-neighbor-group-error-handling-config; - uses bgp-neighbor-error-handling-state; - } - } - - container graceful-restart { - description - "Parameters relating the graceful restart mechanism for BGP"; - container config { - description - "Configuration parameters relating to graceful-restart"; - uses bgp-common-graceful-restart-config; - } - container state { - config false; - description - "State information associated with graceful-restart"; - uses bgp-common-graceful-restart-config; - uses bgp-neighbor-graceful-restart-state; - } - } - - uses bgp-common-structure-neighbor-group-logging-options; - uses bgp-common-structure-neighbor-group-ebgp-multihop; - uses bgp-common-structure-neighbor-group-route-reflector; - uses bgp-common-structure-neighbor-group-as-path-options; - uses bgp-neighbor-use-multiple-paths; - uses oc-rpol:apply-policy-group; - - container afi-safis { - description - "Per-address-family configuration parameters associated with - the neighbor"; - uses bgp-neighbor-afi-safi-list; - } - } - - grouping bgp-neighbor-list { - description - "The list of BGP neighbors"; - - list neighbor { - key "neighbor-address"; - description - "List of BGP neighbors configured on the local system, - uniquely identified by peer IPv[46] address"; - - leaf neighbor-address { - type leafref { - path "../config/neighbor-address"; - } - description - "Reference to the address of the BGP neighbor used as - a key in the neighbor list"; - } - - uses bgp-neighbor-base; - } - - } - - -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-peer-group.yang b/src/plugins/yang/openconfig/openconfig-bgp-peer-group.yang deleted file mode 100644 index b1ba986..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-peer-group.yang +++ /dev/null @@ -1,271 +0,0 @@ -submodule openconfig-bgp-peer-group { - - belongs-to openconfig-bgp { - prefix "oc-bgp"; - } - - import openconfig-extensions { prefix oc-ext; } - import openconfig-routing-policy { prefix oc-rpol; } - - // Include the common submodule - include openconfig-bgp-common; - include openconfig-bgp-common-multiprotocol; - include openconfig-bgp-common-structure; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This sub-module contains groupings that are specific to the - peer-group context of the OpenConfig BGP module."; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - grouping bgp-peer-group-config { - description - "Configuration parameters relating to a base BGP peer group that - are not also applicable to any other context (e.g., neighbor)"; - - leaf peer-group-name { - type string; - description - "Name of the BGP peer-group"; - } - - } - - grouping bgp-peer-group-afi-safi-list { - description - "List of address-families associated with the BGP peer-group"; - - list afi-safi { - key "afi-safi-name"; - - description - "AFI,SAFI configuration available for the - neighbour or group"; - - leaf afi-safi-name { - type leafref { - path "../config/afi-safi-name"; - } - description - "Reference to the AFI-SAFI name used as a key - for the AFI-SAFI list"; - } - - container config { - description - "Configuration parameters for the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; - } - container state { - config false; - description - "State information relating to the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; - } - - container graceful-restart { - description - "Parameters relating to BGP graceful-restart"; - container config { - description - "Configuration options for BGP graceful-restart"; - uses bgp-common-mp-afi-safi-graceful-restart-config; - } - container state { - config false; - description - "State information for BGP graceful-restart"; - uses bgp-common-mp-afi-safi-graceful-restart-config; - } - } - - uses bgp-common-structure-neighbor-group-add-paths; - uses bgp-common-global-group-use-multiple-paths; - uses bgp-common-mp-all-afi-safi-list-contents; - } - } - - grouping bgp-peer-group-base { - description - "Parameters related to a BGP group"; - - container config { - description - "Configuration parameters relating to the BGP neighbor or - group"; - uses bgp-peer-group-config; - uses bgp-common-neighbor-group-config; - } - container state { - config false; - description - "State information relating to the BGP peer-group"; - uses bgp-peer-group-config; - uses bgp-common-neighbor-group-config; - uses bgp-common-state; - } - - container timers { - description - "Timers related to a BGP peer-group"; - - container config { - description - "Configuration parameters relating to timers used for the - BGP neighbor or peer group"; - uses bgp-common-neighbor-group-timers-config; - } - container state { - config false; - description - "State information relating to the timers used for the BGP - group"; - uses bgp-common-neighbor-group-timers-config; - } - } - - container transport { - description - "Transport session parameters for the BGP peer-group"; - - container config { - description - "Configuration parameters relating to the transport - session(s) used for the BGP neighbor or group"; - uses bgp-common-neighbor-group-transport-config; - } - container state { - config false; - description - "State information relating to the transport session(s) - used for the BGP neighbor or group"; - uses bgp-common-neighbor-group-transport-config; - } - } - - container error-handling { - description - "Error handling parameters used for the BGP peer-group"; - - container config { - description - "Configuration parameters enabling or modifying the - behavior or enhanced error handling mechanisms for the BGP - group"; - uses bgp-common-neighbor-group-error-handling-config; - } - container state { - config false; - description - "State information relating to enhanced error handling - mechanisms for the BGP group"; - uses bgp-common-neighbor-group-error-handling-config; - } - } - - container graceful-restart { - description - "Parameters relating the graceful restart mechanism for BGP"; - container config { - description - "Configuration parameters relating to graceful-restart"; - uses bgp-common-graceful-restart-config; - } - container state { - config false; - description - "State information associated with graceful-restart"; - uses bgp-common-graceful-restart-config; - } - } - - uses bgp-common-structure-neighbor-group-logging-options; - uses bgp-common-structure-neighbor-group-ebgp-multihop; - uses bgp-common-structure-neighbor-group-route-reflector; - uses bgp-common-structure-neighbor-group-as-path-options; - uses bgp-common-global-group-use-multiple-paths; - uses oc-rpol:apply-policy-group; - - container afi-safis { - description - "Per-address-family configuration parameters associated with - thegroup"; - uses bgp-peer-group-afi-safi-list; - } - } - - grouping bgp-peer-group-list { - description - "The list of BGP peer groups"; - - list peer-group { - key "peer-group-name"; - description - "List of BGP peer-groups configured on the local system - - uniquely identified by peer-group name"; - - leaf peer-group-name { - type leafref { - path "../config/peer-group-name"; - } - description - "Reference to the name of the BGP peer-group used as a - key in the peer-group list"; - } - - uses bgp-peer-group-base; - } - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-policy.yang b/src/plugins/yang/openconfig/openconfig-bgp-policy.yang deleted file mode 100644 index 23db9f7..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-policy.yang +++ /dev/null @@ -1,1210 +0,0 @@ -module openconfig-bgp-policy { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/bgp-policy"; - - prefix "oc-bgp-pol"; - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-routing-policy {prefix oc-rpol; } - import openconfig-policy-types { prefix oc-pol-types; } - import openconfig-bgp-types { prefix oc-bgp-types; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module contains data definitions for BGP routing policy. - It augments the base routing-policy module with BGP-specific - options for conditions and actions."; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - - // typedef statements - - typedef bgp-set-community-option-type { - type enumeration { - enum ADD { - description - "add the specified communities to the existing - community attribute"; - } - enum REMOVE { - description - "remove the specified communities from the - existing community attribute"; - } - enum REPLACE { - description - "replace the existing community attribute with - the specified communities. If an empty set is - specified, this removes the community attribute - from the route."; - } - } - description - "Type definition for options when setting the community - attribute in a policy action"; - } - - typedef bgp-next-hop-type { - type union { - type oc-inet:ip-address; - type enumeration { - enum SELF { - description "special designation for local router's own - address, i.e., next-hop-self"; - } - } - } - description - "type definition for specifying next-hop in policy actions"; - } - - typedef bgp-set-med-type { - type union { - type uint32; - type string { - pattern '^[+-][0-9]+$'; - } - type enumeration { - enum IGP { - description "set the MED value to the IGP cost toward the - next hop for the route"; - } - } - } - description - "Type definition for specifying how the BGP MED can - be set in BGP policy actions. The three choices are to set - the MED directly, increment/decrement using +/- notation, - and setting it to the IGP cost (predefined value)."; - } - - // grouping statements - - grouping match-community-config { - description - "Configuration data for match conditions on communities"; - - leaf community-set { - type leafref { - path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + - "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:community-sets/" + - "oc-bgp-pol:community-set/oc-bgp-pol:community-set-name"; - } - description - "References a defined community set"; - } - - uses oc-rpol:match-set-options-group; - } - - grouping match-community-state { - description - "Operational state data for match conditions on communities"; - } - - grouping match-community-top { - description - "Top-level grouping for match conditions on communities"; - - container match-community-set { - description - "Top-level container for match conditions on communities. - Match a referenced community-set according to the logic - defined in the match-set-options leaf"; - - container config { - description - "Configuration data for match conditions on communities"; - - uses match-community-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses match-community-config; - uses match-community-state; - } - } - } - - grouping match-ext-community-config { - description - "Configuration data for match conditions on extended - communities"; - - leaf ext-community-set { - type leafref { - path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + - "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:ext-community-sets/" + - "oc-bgp-pol:ext-community-set/" + - "oc-bgp-pol:ext-community-set-name"; - } - description "References a defined extended community set"; - } - - uses oc-rpol:match-set-options-group; - } - - grouping match-ext-community-state { - description - "Operational state data for match conditions on extended - communities"; - } - - grouping match-ext-community-top { - description - "Top-level grouping for match conditions on extended - communities"; - - container match-ext-community-set { - description - "Match a referenced extended community-set according to the - logic defined in the match-set-options leaf"; - - container config { - description - "Configuration data for match conditions on extended - communities"; - - uses match-ext-community-config; - } - - container state { - - config false; - - description - "Operational state data for match conditions on extended - communities"; - - uses match-ext-community-config; - uses match-ext-community-state; - } - } - } - - grouping match-as-path-config { - description - "Configuration data for match conditions on AS path set"; - - leaf as-path-set { - type leafref { - path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + - "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:as-path-sets/" + - "oc-bgp-pol:as-path-set/oc-bgp-pol:as-path-set-name"; - } - description "References a defined AS path set"; - } - uses oc-rpol:match-set-options-group; - } - - grouping match-as-path-state { - description - "Operational state data for match conditions on AS path set"; - } - - grouping match-as-path-top { - description - "Top-level grouping for match conditions on AS path set"; - - container match-as-path-set { - description - "Match a referenced as-path set according to the logic - defined in the match-set-options leaf"; - - container config { - description - "Configuration data for match conditions on AS path set"; - - uses match-as-path-config; - } - - container state { - - config false; - - description - "Operational state data for match conditions on AS - path set"; - - uses match-as-path-config; - uses match-as-path-state; - } - } - } - - grouping bgp-match-set-conditions { - description - "Condition statement definitions for checking membership in a - defined set"; - - uses match-community-top; - uses match-ext-community-top; - uses match-as-path-top; - } - - grouping community-count-config { - description - "Configuration data for community count condition"; - - uses oc-pol-types:attribute-compare-operators; - } - - grouping community-count-state { - description - "Operational state data for community count condition"; - } - - grouping community-count-top { - description - "Top-level grouping for community count condition"; - - container community-count { - description - "Value and comparison operations for conditions based on the - number of communities in the route update"; - - container config { - description - "Configuration data for community count condition"; - - uses community-count-config; - } - - container state { - - config false; - - description - "Operational state data for community count condition"; - - uses community-count-config; - uses community-count-state; - } - } - } - - grouping as-path-length-config { - description - "Configuration data for AS path length condition"; - - uses oc-pol-types:attribute-compare-operators; - } - - grouping as-path-length-state { - description - "Operational state data for AS path length condition"; - } - - grouping as-path-length-top { - description - "Top-level grouping for AS path length condition"; - - container as-path-length { - description - "Value and comparison operations for conditions based on the - length of the AS path in the route update"; - - container config { - description - "Configuration data for AS path length condition"; - - uses as-path-length-config; - } - - container state { - - config false; - - description - "Operational state data for AS path length condition"; - - uses as-path-length-config; - uses as-path-length-state; - } - } - } - - grouping bgp-conditions-config { - description - "Configuration data for BGP-specific policy conditions"; - - leaf med-eq { - type uint32; - description - "Condition to check if the received MED value is equal to - the specified value"; - } - - leaf origin-eq { - type oc-bgp-types:bgp-origin-attr-type; - description - "Condition to check if the route origin is equal to the - specified value"; - } - - leaf-list next-hop-in { - type oc-inet:ip-address; - description - "List of next hop addresses to check for in the route - update"; - } - - leaf-list afi-safi-in { - type identityref { - base oc-bgp-types:AFI_SAFI_TYPE; - } - description - "List of address families which the NLRI may be - within"; - } - - leaf local-pref-eq { - type uint32; - // TODO: add support for other comparisons if needed - description - "Condition to check if the local pref attribute is equal to - the specified value"; - } - - leaf route-type { - // TODO: verify extent of vendor support for this comparison - type enumeration { - enum INTERNAL { - description "route type is internal"; - } - enum EXTERNAL { - description "route type is external"; - } - } - description - "Condition to check the route type in the route update"; - } - } - - grouping bgp-conditions-state { - description - "Operational state data for BGP-specific policy conditions"; - } - - grouping bgp-conditions-top { - description - "Top-level grouping for BGP-specific policy conditions"; - - container bgp-conditions { - description - "Top-level container "; - - container config { - description - "Configuration data for BGP-specific policy conditions"; - - uses bgp-conditions-config; - } - - container state { - - config false; - - description - "Operational state data for BGP-specific policy - conditions"; - - uses bgp-conditions-config; - uses bgp-conditions-state; - } - - uses community-count-top; - uses as-path-length-top; - uses bgp-match-set-conditions; - } - } - - grouping community-set-config { - description - "Configuration data for BGP community sets"; - - leaf community-set-name { - type string; - mandatory true; - description - "name / label of the community set -- this is used to - reference the set in match conditions"; - } - - leaf-list community-member { - type union { - type oc-bgp-types:bgp-std-community-type; - type oc-bgp-types:bgp-community-regexp-type; - type oc-bgp-types:bgp-well-known-community-type; - } - description - "members of the community set"; - } - } - - grouping community-set-state { - description - "Operational state data for BGP community sets"; - } - - grouping community-set-top { - description - "Top-level grouping for BGP community sets"; - - container community-sets { - description - "Enclosing container for list of defined BGP community sets"; - - list community-set { - key "community-set-name"; - description - "List of defined BGP community sets"; - - leaf community-set-name { - type leafref { - path "../config/community-set-name"; - } - description - "Reference to list key"; - } - - container config { - description - "Configuration data for BGP community sets"; - - uses community-set-config; - } - - container state { - - config false; - - description - "Operational state data for BGP community sets"; - - uses community-set-config; - uses community-set-state; - } - } - } - } - - grouping ext-community-set-config { - description - "Configuration data for extended BGP community sets"; - - leaf ext-community-set-name { - type string; - description - "name / label of the extended community set -- this is - used to reference the set in match conditions"; - } - - leaf-list ext-community-member { - type union { - type oc-bgp-types:bgp-ext-community-type; - type oc-bgp-types:bgp-community-regexp-type; - } - description - "members of the extended community set"; - } - } - - grouping ext-community-set-state { - description - "Operational state data for extended BGP community sets"; - } - - grouping ext-community-set-top { - description - "Top-level grouping for extended BGP community sets"; - - container ext-community-sets { - description - "Enclosing container for list of extended BGP community - sets"; - - list ext-community-set { - key "ext-community-set-name"; - description - "List of defined extended BGP community sets"; - - leaf ext-community-set-name { - type leafref { - path "../config/ext-community-set-name"; - } - description - "Reference to list key"; - } - - container config { - description - "Configuration data for extended BGP community sets"; - - uses ext-community-set-config; - } - - container state { - - config false; - - description - "Operational state data for extended BGP community sets"; - - uses ext-community-set-config; - uses ext-community-set-state; - } - } - } - } - - grouping as-path-set-config { - description - "Configuration data for AS path sets"; - - leaf as-path-set-name { - type string; - description - "name of the AS path set -- this is used to reference - the set in match conditions"; - } - - leaf-list as-path-set-member { - // TODO: need to refine typedef for AS path expressions - type string; - description - "AS path expression -- list of ASes in the set"; - } - } - - grouping as-path-set-state { - description - "Operational state data for AS path sets"; - } - - grouping as-path-set-top { - description - "Top-level grouping for AS path sets"; - - container as-path-sets { - description - "Enclosing container for list of define AS path sets"; - - list as-path-set { - key "as-path-set-name"; - description - "List of defined AS path sets"; - - leaf as-path-set-name { - type leafref { - path "../config/as-path-set-name"; - } - description - "Reference to list key"; - } - - container config { - description - "Configuration data for AS path sets"; - - uses as-path-set-config; - } - - container state { - - config false; - - description - "Operational state data for AS path sets"; - - uses as-path-set-config; - uses as-path-set-state; - } - } - } - } - - // augment statements - - augment "/oc-rpol:routing-policy/oc-rpol:defined-sets" { - description "adds BGP defined sets container to routing policy - model"; - - container bgp-defined-sets { - description - "BGP-related set definitions for policy match conditions"; - - uses community-set-top; - uses ext-community-set-top; - uses as-path-set-top; - } - } - - grouping as-path-prepend-config { - description - "Configuration data for the AS path prepend action"; - - leaf repeat-n { - type uint8 { - range 1..max; - } - description - "Number of times to prepend the value specified in the asn - leaf to the AS path. If no value is specified by the asn - leaf, the local AS number of the system is used. The value - should be between 1 and the maximum supported by the - implementation."; - } - - leaf asn { - type oc-inet:as-number; - description - "The AS number to prepend to the AS path. If this leaf is - not specified and repeat-n is set, then the local AS - number will be used for prepending."; - } - } - - grouping as-path-prepend-state { - description - "Operational state data for the AS path prepend action"; - } - - grouping as-path-prepend-top { - description - "Top-level grouping for the AS path prepend action"; - - container set-as-path-prepend { - description - "Action to prepend the specified AS number to the AS-path a - specified number of times"; - - container config { - description - "Configuration data for the AS path prepend action"; - - uses as-path-prepend-config; - } - - container state { - - config false; - - description - "Operational state data for the AS path prepend action"; - - uses as-path-prepend-config; - uses as-path-prepend-state; - } - } - } - - grouping set-community-action-common { - description - "Common leaves for set-community and set-ext-community - actions"; - - leaf method { - type enumeration { - enum INLINE { - description - "The extended communities are specified inline as a - list"; - } - enum REFERENCE { - description - "The extended communities are specified by referencing a - defined ext-community set"; - } - } - description - "Indicates the method used to specify the extended - communities for the set-ext-community action"; - } - - leaf options { - type bgp-set-community-option-type; - description - "Options for modifying the community attribute with - the specified values. These options apply to both - methods of setting the community attribute."; - } - } - - grouping set-community-inline-config { - description - "Configuration data for inline specification of set-community - action"; - - leaf-list communities { - type union { - type oc-bgp-types:bgp-std-community-type; - type oc-bgp-types:bgp-well-known-community-type; - } - description - "Set the community values for the update inline with - a list."; - } - } - - grouping set-community-inline-state { - description - "Operational state data or inline specification of - set-community action"; - } - - grouping set-community-inline-top { - description - "Top-level grouping or inline specification of set-community - action"; - - container inline { - when "../config/method=INLINE" { - description - "Active only when the set-community method is INLINE"; - } - description - "Set the community values for the action inline with - a list."; - - container config { - description - "Configuration data or inline specification of set-community - action"; - - uses set-community-inline-config; - } - - container state { - - config false; - - description - "Operational state data or inline specification of - set-community action"; - - uses set-community-inline-config; - uses set-community-inline-state; - } - } - } - - grouping set-community-reference-config { - description - "Configuration data for referening a community-set in the - set-community action"; - - leaf community-set-ref { - type leafref { - path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + - "oc-bgp-pol:bgp-defined-sets/" + - "oc-bgp-pol:community-sets/oc-bgp-pol:community-set/" + - "oc-bgp-pol:community-set-name"; - } - description - "References a defined community set by name"; - } - } - - grouping set-community-reference-state { - description - "Operational state data for referening a community-set in the - set-community action"; - } - - grouping set-community-reference-top { - description - "Top-level grouping for referening a community-set in the - set-community action"; - - container reference { - when "../config/method=REFERENCE" { - description - "Active only when the set-community method is REFERENCE"; - } - description - "Provide a reference to a defined community set for the - set-community action"; - - container config { - description - "Configuration data for referening a community-set in the - set-community action"; - - uses set-community-reference-config; - } - - container state { - - config false; - - description - "Operational state data for referening a community-set - in the set-community action"; - - uses set-community-reference-config; - uses set-community-reference-state; - } - } - } - - grouping set-community-action-config { - description - "Configuration data for the set-community action"; - - uses set-community-action-common; - } - - grouping set-community-action-state { - description - "Operational state data for the set-community action"; - } - - grouping set-community-action-top { - description - "Top-level grouping for the set-community action"; - - container set-community { - description - "Action to set the community attributes of the route, along - with options to modify how the community is modified. - Communities may be set using an inline list OR - reference to an existing defined set (not both)."; - - container config { - description - "Configuration data for the set-community action"; - - uses set-community-action-config; - } - - container state { - - config false; - - description - "Operational state data for the set-community action"; - - uses set-community-action-config; - uses set-community-action-state; - } - - uses set-community-inline-top; - uses set-community-reference-top; - } - } - - grouping set-ext-community-inline-config { - description - "Configuration data for inline specification of - set-ext-community action"; - - leaf-list communities { - type union { - type oc-bgp-types:bgp-ext-community-type; - type oc-bgp-types:bgp-well-known-community-type; - } - description - "Set the extended community values for the update inline - with a list."; - } - } - - grouping set-ext-community-inline-state { - description - "Operational state data or inline specification of - set-ext-community action"; - } - - grouping set-ext-community-inline-top { - description - "Top-level grouping or inline specification of set-ext-community - action"; - - container inline { - when "../config/method=INLINE" { - description - "Active only when the set-community method is INLINE"; - } - description - "Set the extended community values for the action inline with - a list."; - - container config { - description - "Configuration data or inline specification of - set-ext-community action"; - - uses set-ext-community-inline-config; - } - - container state { - - config false; - - description - "Operational state data or inline specification of - set-ext-community action"; - - uses set-ext-community-inline-config; - uses set-ext-community-inline-state; - } - } - } - - grouping set-ext-community-reference-config { - description - "Configuration data for referening a extended community-set - in the set-ext-community action"; - - leaf ext-community-set-ref { - type leafref { - path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + - "oc-bgp-pol:bgp-defined-sets/" + - "oc-bgp-pol:ext-community-sets/" + - "oc-bgp-pol:ext-community-set/" + - "oc-bgp-pol:ext-community-set-name"; - } - description - "References a defined extended community set by - name"; - } - } - - grouping set-ext-community-reference-state { - description - "Operational state data for referening an extended - community-set in the set-ext-community action"; - } - - grouping set-ext-community-reference-top { - description - "Top-level grouping for referening an extended community-set - in the set-community action"; - - container reference { - when "../config/method=REFERENCE" { - description - "Active only when the set-community method is REFERENCE"; - } - description - "Provide a reference to an extended community set for the - set-ext-community action"; - - container config { - description - "Configuration data for referening an extended - community-set in the set-ext-community action"; - - uses set-ext-community-reference-config; - } - - container state { - - config false; - - description - "Operational state data for referening an extended - community-set in the set-ext-community action"; - - uses set-ext-community-reference-config; - uses set-ext-community-reference-state; - } - } - } - - grouping set-ext-community-action-config { - description - "Configuration data for the set-ext-community action"; - - uses set-community-action-common; - } - - grouping set-ext-community-action-state { - description - "Operational state data for the set-ext-community action"; - } - - grouping set-ext-community-action-top { - description - "Top-level grouping for the set-ext-community action"; - - container set-ext-community { - description - "Action to set the extended community attributes of the - route, along with options to modify how the community is - modified. Extended communities may be set using an inline - list OR a reference to an existing defined set (but not - both)."; - - container config { - description - "Configuration data for the set-ext-community action"; - - uses set-ext-community-action-config; - } - - container state { - - config false; - - description - "Operational state data for the set-ext-community action"; - - uses set-ext-community-action-config; - uses set-ext-community-action-state; - } - uses set-ext-community-inline-top; - uses set-ext-community-reference-top; - } - } - - grouping bgp-actions-config { - description - "Configuration data for BGP-specific actions"; - - leaf set-route-origin { - type oc-bgp-types:bgp-origin-attr-type; - description "set the origin attribute to the specified - value"; - } - - leaf set-local-pref { - type uint32; - description "set the local pref attribute on the route - update"; - } - - leaf set-next-hop { - type bgp-next-hop-type; - description "set the next-hop attribute in the route update"; - } - - leaf set-med { - type bgp-set-med-type; - description "set the med metric attribute in the route - update"; - } - } - - grouping bgp-actions-state { - description - "Operational state data for BGP-specific actions"; - } - - grouping bgp-actions-top { - description - "Top-level grouping for BGP-specific actions"; - - container bgp-actions { - description - "Top-level container for BGP-specific actions"; - - container config { - description - "Configuration data for BGP-specific actions"; - - uses bgp-actions-config; - } - - container state { - - config false; - - description - "Operational state data for BGP-specific actions"; - - uses bgp-actions-config; - uses bgp-actions-state; - } - uses as-path-prepend-top; - uses set-community-action-top; - uses set-ext-community-action-top; - } - } - - augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + - "oc-rpol:conditions" { - description - "BGP policy conditions added to routing policy module"; - - uses bgp-conditions-top; - } - - augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + - "oc-rpol:actions" { - description "BGP policy actions added to routing policy - module"; - - uses bgp-actions-top; - } - - // rpc statements - - // notification statements -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp-types.yang b/src/plugins/yang/openconfig/openconfig-bgp-types.yang deleted file mode 100644 index 0b57480..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp-types.yang +++ /dev/null @@ -1,604 +0,0 @@ -module openconfig-bgp-types { - yang-version "1"; - - namespace "http://openconfig.net/yang/bgp-types"; - - prefix "oc-bgp-types"; - - import openconfig-types { prefix "oc-types"; } - import openconfig-inet-types { prefix "oc-inet"; } - import openconfig-extensions { prefix "oc-ext"; } - - // Include definitions of BGP error notifications - include openconfig-bgp-errors; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module contains general data definitions for use in BGP - policy. It can be imported by modules that make use of BGP - attributes"; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2018-03-20" { - description - "Added color extended community"; - reference "4.0.2"; - } - - revision "2017-07-30" { - description - "Clarification of add-paths send-max leaf"; - reference "4.0.1"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - - identity BGP_CAPABILITY { - description "Base identity for a BGP capability"; - } - - identity MPBGP { - base BGP_CAPABILITY; - description - "Multi-protocol extensions to BGP"; - reference "RFC2858"; - } - - identity ROUTE_REFRESH { - base BGP_CAPABILITY; - description - "The BGP route-refresh functionality"; - reference "RFC2918"; - } - - identity ASN32 { - base BGP_CAPABILITY; - description - "4-byte (32-bit) AS number functionality"; - reference "RFC6793"; - } - - identity GRACEFUL_RESTART { - base BGP_CAPABILITY; - description - "Graceful restart functionality"; - reference "RFC4724"; - } - - identity ADD_PATHS { - base BGP_CAPABILITY; - description - "BGP add-paths"; - reference "draft-ietf-idr-add-paths"; - } - - identity AFI_SAFI_TYPE { - description - "Base identity type for AFI,SAFI tuples for BGP-4"; - reference "RFC4760 - multiprotocol extensions for BGP-4"; - } - - identity IPV4_UNICAST { - base AFI_SAFI_TYPE; - description - "IPv4 unicast (AFI,SAFI = 1,1)"; - reference "RFC4760"; - } - - identity IPV6_UNICAST { - base AFI_SAFI_TYPE; - description - "IPv6 unicast (AFI,SAFI = 2,1)"; - reference "RFC4760"; - } - - identity IPV4_LABELED_UNICAST { - base AFI_SAFI_TYPE; - description - "Labeled IPv4 unicast (AFI,SAFI = 1,4)"; - reference "RFC3107"; - } - - identity IPV6_LABELED_UNICAST { - base AFI_SAFI_TYPE; - description - "Labeled IPv6 unicast (AFI,SAFI = 2,4)"; - reference "RFC3107"; - } - - identity L3VPN_IPV4_UNICAST { - base AFI_SAFI_TYPE; - description - "Unicast IPv4 MPLS L3VPN (AFI,SAFI = 1,128)"; - reference "RFC4364"; - } - - identity L3VPN_IPV6_UNICAST { - base AFI_SAFI_TYPE; - description - "Unicast IPv6 MPLS L3VPN (AFI,SAFI = 2,128)"; - reference "RFC4659"; - } - - identity L3VPN_IPV4_MULTICAST { - base AFI_SAFI_TYPE; - description - "Multicast IPv4 MPLS L3VPN (AFI,SAFI = 1,129)"; - reference "RFC6514"; - } - - identity L3VPN_IPV6_MULTICAST { - base AFI_SAFI_TYPE; - description - "Multicast IPv6 MPLS L3VPN (AFI,SAFI = 2,129)"; - reference "RFC6514"; - } - - identity L2VPN_VPLS { - base AFI_SAFI_TYPE; - description - "BGP-signalled VPLS (AFI,SAFI = 25,65)"; - reference "RFC4761"; - } - - identity L2VPN_EVPN { - base AFI_SAFI_TYPE; - description - "BGP MPLS Based Ethernet VPN (AFI,SAFI = 25,70)"; - } - - identity SRTE_POLICY_IPV4 { - base AFI_SAFI_TYPE; - description - "Segment Routing Traffic Engineering (SRTE) Policy - for IPv4 (AFI,SAFI = 1,73)"; - } - - identity SRTE_POLICY_IPV6 { - base AFI_SAFI_TYPE; - description - "Segment Routing Traffic Engineering (SRTE) Policy - for IPv6 (AFI,SAFI = 2,73)"; - } - - identity BGP_WELL_KNOWN_STD_COMMUNITY { - description - "Reserved communities within the standard community space - defined by RFC1997. These communities must fall within the - range 0x00000000 to 0xFFFFFFFF"; - reference "RFC1997"; - } - - identity NO_EXPORT { - base BGP_WELL_KNOWN_STD_COMMUNITY; - description - "Do not export NLRI received carrying this community outside - the bounds of this autonomous system, or this confederation if - the local autonomous system is a confederation member AS. This - community has a value of 0xFFFFFF01."; - reference "RFC1997"; - } - - identity NO_ADVERTISE { - base BGP_WELL_KNOWN_STD_COMMUNITY; - description - "All NLRI received carrying this community must not be - advertised to other BGP peers. This community has a value of - 0xFFFFFF02."; - reference "RFC1997"; - } - - identity NO_EXPORT_SUBCONFED { - base BGP_WELL_KNOWN_STD_COMMUNITY; - description - "All NLRI received carrying this community must not be - advertised to external BGP peers - including over confederation - sub-AS boundaries. This community has a value of 0xFFFFFF03."; - reference "RFC1997"; - } - - identity NOPEER { - base BGP_WELL_KNOWN_STD_COMMUNITY; - description - "An autonomous system receiving NLRI tagged with this community - is advised not to readvertise the NLRI to external bi-lateral - peer autonomous systems. An AS may also filter received NLRI - from bilateral peer sessions when they are tagged with this - community value"; - reference "RFC3765"; - } - - typedef bgp-session-direction { - type enumeration { - enum INBOUND { - description - "Refers to all NLRI received from the BGP peer"; - } - enum OUTBOUND { - description - "Refers to all NLRI advertised to the BGP peer"; - } - } - description - "Type to describe the direction of NLRI transmission"; - } - - typedef bgp-well-known-community-type { - type identityref { - base BGP_WELL_KNOWN_STD_COMMUNITY; - } - description - "Type definition for well-known IETF community attribute - values"; - reference - "IANA Border Gateway Protocol (BGP) Well Known Communities"; - } - - - typedef bgp-std-community-type { - // TODO: further refine restrictions and allowed patterns - // 4-octet value: - // <as number> 2 octets - // <community value> 2 octets - type union { - type uint32 { - // per RFC 1997, 0x00000000 - 0x0000FFFF and 0xFFFF0000 - - // 0xFFFFFFFF are reserved - } - type string { - pattern '^(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; - } - } - description - "Type definition for standard commmunity attributes represented as - a integer value, or a string of the form N:M where N and M are - integers between 0 and 65535."; - reference "RFC 1997 - BGP Communities Attribute"; - } - - typedef bgp-ext-community-type { - type union { - type string { - // Type 1: 2-octet global and 4-octet local - // (AS number) (Integer) - pattern '^(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + - '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + - '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + - '[1-9][0-9]{1,8}|[0-9])$'; - } - type string { - // Type 2: 4-octet global and 2-octet local - // (ipv4-address) (integer) - pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + - '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + - '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; - } - type string { - // RFC5668: 4-octet global and 2-octet local - // (AS number) (integer) - pattern '^(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + - '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + - '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; - } - type string { - // route-target with Type 1 - // route-target:(ASN):(local-part) - pattern '^route\-target:' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + - '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + - '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + - '[1-9][0-9]{1,8}|[0-9])$'; - } - type string { - // route-target with Type 2 - // route-target:(IPv4):(local-part) - pattern '^route\-target:' + - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + - '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + - '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; - } - type string { - // 4-byte AS Type 1 route-target - pattern '^route\-target:' + - '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + - '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + - '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; - } - type string { - // route-origin with Type 1 - pattern '^route\-origin:' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + - '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + - '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + - '[1-9][0-9]{1,8}|[0-9])$'; - } - type string { - // route-origin with Type 2 - pattern '^route\-origin:' + - '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + - '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + - '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; - } - type string { - // 4-byte AS Type 1 route-origin - pattern '^route\-origin:' + - '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + - '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + - '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + - '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; - } - type string { - // Extended Color Community - pattern '^color:' + - '[0-1]{2}:' + - '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + - '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + - '[1-9][0-9]{1,8}|[0-9])$'; - } - } - description - "Type definition for extended community attributes. In the case that - common communities are utilised, they are represented as a string - of the form: - - <2b AS>:<4b value> per RFC4360 section 3.1 - - <4b IPv4>:<2b value> per RFC4360 section 3.2 - - <4b AS>:<2b value> per RFC5668 section 2. - - route-target:<2b AS>:<4b value> per RFC4360 section 4 - - route-target:<4b IPv4>:<2b value> per RFC4360 section 4 - - route-origin:<2b ASN>:<4b value> per RFC4360 section 5 - - route-origin:<4b IPv4>:<2b value> per RFC4360 section 5 - - color:<CO bits>:<4b value> per draft-ietf-idr-segment-routing-te-policy - section 3"; - reference - "RFC 4360 - BGP Extended Communities Attribute - RFC 5668 - 4-Octet AS Specific BGP Extended Community - draft-ietf-idr-segment-routing-te-policy"; - } - - typedef bgp-ext-community-recv-type { - type union { - type bgp-ext-community-type; - type binary { - length 8; - } - } - description - "A type definition utilised to define the extended community - in a context where the system is receiving the extended - community from an external source, such that the value may be - unknown. In the case that the received extended community is - unknown it is defined to be a 8-octet quantity formatted - according to RFC4360: - - Type Field: 1 or 2 octets. - Value Field: Remaining octets. - - The high-order octet of the type field is encoded such that - bit 0 indicates whether the extended community type is IANA - assigned; and bit 1 indicates whether the extended community - is transitive. The remaining bits of the high-order type - field must be interpreted to determine whether the low-order - type field should be parsed, or whether the entire remainder - of the extended community is a value."; - reference - "RFC 4360 - BGP Extended Communities Attribute - RFC 5668 - 4-Octet AS Specific BGP Extended Community"; - } - - typedef bgp-community-regexp-type { - // TODO: needs more work to decide what format these regexps can - // take. - type oc-types:std-regexp; - description - "Type definition for communities specified as regular - expression patterns"; - } - - typedef bgp-origin-attr-type { - type enumeration { - enum IGP { - description - "Origin of the NLRI is internal"; - } - enum EGP { - description - "Origin of the NLRI is EGP"; - } - enum INCOMPLETE { - description - "Origin of the NLRI is neither IGP or EGP"; - } - } - description - "Type definition for standard BGP origin attribute"; - reference "RFC 4271 - A Border Gateway Protocol 4 (BGP-4), - Sec 4.3"; - } - - typedef peer-type { - type enumeration { - enum INTERNAL { - description - "Internal (iBGP) peer"; - } - enum EXTERNAL { - description - "External (eBGP) peer"; - } - } - description - "Labels a peer or peer group as explicitly internal or - external"; - } - - identity REMOVE_PRIVATE_AS_OPTION { - description - "Base identity for options for removing private autonomous - system numbers from the AS_PATH attribute"; - } - - identity PRIVATE_AS_REMOVE_ALL { - base REMOVE_PRIVATE_AS_OPTION; - description - "Strip all private autonmous system numbers from the AS_PATH. - This action is performed regardless of the other content of the - AS_PATH attribute, and for all instances of private AS numbers - within that attribute."; - } - - identity PRIVATE_AS_REPLACE_ALL { - base REMOVE_PRIVATE_AS_OPTION; - description - "Replace all instances of private autonomous system numbers in - the AS_PATH with the local BGP speaker's autonomous system - number. This action is performed regardless of the other - content of the AS_PATH attribute, and for all instances of - private AS number within that attribute."; - } - - typedef remove-private-as-option { - type identityref { - base REMOVE_PRIVATE_AS_OPTION; - } - description - "Set of options for configuring how private AS path numbers - are removed from advertisements"; - } - - typedef rr-cluster-id-type { - type union { - type uint32; - type oc-inet:ipv4-address; - } - description - "Union type for route reflector cluster ids: - option 1: 4-byte number - option 2: IP address"; - } - - typedef community-type { - type enumeration { - enum STANDARD { - description "Send only standard communities"; - } - enum EXTENDED { - description "Send only extended communities"; - } - enum BOTH { - description "Send both standard and extended communities"; - } - enum NONE { - description "Do not send any community attribute"; - } - } - description - "type describing variations of community attributes: - STANDARD: standard BGP community [rfc1997] - EXTENDED: extended BGP community [rfc4360] - BOTH: both standard and extended community"; - } - - - typedef as-path-segment-type { - type enumeration { - enum AS_SEQ { - description - "Ordered set of autonomous systems that a route in - the UPDATE message has traversed"; - } - enum AS_SET { - description - "Unordered set of autonomous systems that a route in - the UPDATE message has traversed"; - } - enum AS_CONFED_SEQUENCE { - description - "Ordered set of Member Autonomous - Systems in the local confederation that the UPDATE message - has traversed"; - } - enum AS_CONFED_SET { - description - "Unordered set of Member Autonomous Systems - in the local confederation that the UPDATE message has - traversed"; - } - } - description - "Defines the types of BGP AS path segments."; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-bgp.yang b/src/plugins/yang/openconfig/openconfig-bgp.yang deleted file mode 100644 index 9331e9f..0000000 --- a/src/plugins/yang/openconfig/openconfig-bgp.yang +++ /dev/null @@ -1,155 +0,0 @@ -module openconfig-bgp { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/bgp"; - - prefix "oc-bgp"; - - // import some basic inet types - import openconfig-extensions { prefix oc-ext; } - - // Include the OpenConfig BGP submodules - // Common: defines the groupings that are common across more than - // one context (where contexts are neighbor, group, global) - include openconfig-bgp-common; - // Multiprotocol: defines the groupings that are common across more - // than one context, and relate to Multiprotocol - include openconfig-bgp-common-multiprotocol; - // Structure: defines groupings that are shared but are solely used for - // structural reasons. - include openconfig-bgp-common-structure; - // Include peer-group/neighbor/global - these define the groupings - // that are specific to one context - include openconfig-bgp-peer-group; - include openconfig-bgp-neighbor; - include openconfig-bgp-global; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module describes a YANG model for BGP protocol - configuration.It is a limited subset of all of the configuration - parameters available in the variety of vendor implementations, - hence it is expected that it would be augmented with vendor- - specific configuration data as needed. Additional modules or - submodules to handle other aspects of BGP configuration, - including policy, VRFs, VPNs, and additional address families - are also expected. - - This model supports the following BGP configuration level - hierarchy: - - BGP - | - +-> [ global BGP configuration ] - +-> AFI / SAFI global - +-> peer group - +-> [ peer group config ] - +-> AFI / SAFI [ per-AFI overrides ] - +-> neighbor - +-> [ neighbor config ] - +-> [ optional pointer to peer-group ] - +-> AFI / SAFI [ per-AFI overrides ]"; - - oc-ext:openconfig-version "5.0.1"; - - revision "2018-08-20" { - description - "Correct description of AFI-SAFI enabled leaf."; - reference "5.0.1"; - } - - revision "2018-04-11" { - description - "Correct naming of BGP maximum prefix warning percentage leaf."; - reference "5.0.0"; - } - - revision "2018-03-20" { - description - "Added SR-TE policy SAFI"; - reference "4.1.0"; - } - - revision "2017-07-30" { - description - "Clarification of add-paths send-max leaf"; - reference "4.0.1"; - } - - revision "2017-07-10" { - description - "Add error notifications; moved add-paths config; add AS - prepend policy features; removed unneeded config leaves"; - reference "4.0.0"; - } - - revision "2017-02-02" { - description - "Bugfix to remove remaining global-level policy data"; - reference "3.0.1"; - } - - revision "2017-01-26" { - description - "Add dynamic neighbor support, migrate to OpenConfig types"; - reference "3.0.0"; - } - - revision "2016-06-21" { - description - "OpenConfig BGP refactor"; - reference "2.1.1"; - } - - revision "2016-06-06" { - description - "OpenConfig public release"; - reference "2.1.0"; - } - - revision "2016-03-31" { - description - "OpenConfig public release"; - reference "2.0.1"; - } - - grouping bgp-top { - description - "Top-level grouping for the BGP model data"; - - container bgp { - description - "Top-level configuration and state for the BGP router"; - - container global { - description - "Global configuration for the BGP router"; - uses bgp-global-base; - } - - container neighbors { - description - "Configuration for BGP neighbors"; - uses bgp-neighbor-list; - } - - container peer-groups { - description - "Configuration for BGP peer-groups"; - uses bgp-peer-group-list; - } - } - } - - uses bgp-top; - -} diff --git a/src/plugins/yang/openconfig/openconfig-catalog-types.yang b/src/plugins/yang/openconfig/openconfig-catalog-types.yang deleted file mode 100644 index bdec31e..0000000 --- a/src/plugins/yang/openconfig/openconfig-catalog-types.yang +++ /dev/null @@ -1,242 +0,0 @@ -module openconfig-catalog-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/catalog-types"; - - prefix "oc-cat-types"; - - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines types and identities used by the OpenConfig - YANG module catalog model."; - - oc-ext:openconfig-version "0.2.1"; - - revision "2017-05-01" { - description - "Fix to module dependency list"; - reference "0.2.1"; - } - - revision "2017-03-08" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - revision "2016-02-15" { - description - "Initial OpenConfig public release"; - reference "0.1.0"; - } - - - // extension statements - - // feature statements - - // identity statements - - identity CATALOG_MEMBER_TYPE { - description - "Base identity for elements in the catalog"; - } - - identity MODULE { - base CATALOG_MEMBER_TYPE; - description - "Module elements in the catalog"; - } - - identity RELEASE_BUNDLE { - base CATALOG_MEMBER_TYPE; - description - "Release bundle elements in the catalog"; - } - - identity FEATURE_BUNDLE { - base CATALOG_MEMBER_TYPE; - description - "Feature bundle elements in the catalog"; - } - - - identity IMPLEMENTATION_STATUS_TYPE { - description - "Indications of the status of a module's implementation on a - device or server"; - } - - identity IN_PROGRESS { - base IMPLEMENTATION_STATUS_TYPE; - description - "Implementation is in progress"; - } - - identity PLANNED { - base IMPLEMENTATION_STATUS_TYPE; - description - "Implementation is planned"; - } - - identity COMPLETE { - base IMPLEMENTATION_STATUS_TYPE; - description - "Implementation is complete and fully supports the model"; - } - - identity PARTIAL { - base IMPLEMENTATION_STATUS_TYPE; - description - "Implementation is complete, but only supports the model - partially"; - } - - identity MODULE_STATUS_TYPE { - description - "Indicates the deployment status of the module"; - } - - identity EXPERIMENTAL { - base MODULE_STATUS_TYPE; - description - "Module should be considered experimental, not deployed in - production settings"; - } - - identity PRODUCTION { - base MODULE_STATUS_TYPE; - description - "Module is suitable for use in production, or has been - deployed in production"; - } - - identity MODULE_CATEGORY_BASE { - description - "Base identity for the module category. It is expected that - publishing organizations will define additional derived - identities to describe their categorization scheme."; - } - - identity MODULE_SUBCATEGORY_BASE { - description - "Base identity for the module subcategory. It is expected that - publishing organizations will define additional derived - identities to describe their categorization scheme."; - } - - identity ORGANIZATION_TYPE { - description - "Publishing organization type for the set of modules"; - } - - identity STANDARDS { - base ORGANIZATION_TYPE; - description - "Standards development organization (SDO) publisher type"; - } - - identity INDUSTRY { - base ORGANIZATION_TYPE; - description - "Industry forum or other industry group"; - } - - identity COMMERCIAL { - base ORGANIZATION_TYPE; - description - "Commercial entity, company, etc."; - } - - identity INDIVIDUAL { - base ORGANIZATION_TYPE; - description - "For modules published by an individual"; - } - - identity IETF_MODEL_LAYER { - base MODULE_CATEGORY_BASE; - description - "Describes layering of models based on their abstraction - level as defined by IETF model classification proposals"; - reference - "IETF draft-ietf-netmod-yang-model-classification"; - } - - identity IETF_MODEL_TYPE { - base MODULE_SUBCATEGORY_BASE; - description - "IETF proposed classification dimension of YANG model types as - standard YANG models, vendor-specific, or user-specific YANG - models and extensions"; - reference - "IETF draft-ietf-netmod-yang-model-classification"; - } - - identity IETF_NETWORK_SERVICE { - base IETF_MODEL_LAYER; - description - "Service-layer model as defined by IETF classification - proposal"; - } - - identity IETF_NETWORK_ELEMENT { - base IETF_MODEL_LAYER; - description - "Network element-layer model as defined by IETF classification - proposal"; - } - - identity IETF_TYPE_STANDARD { - base IETF_MODEL_TYPE; - description - "Models published by standards-defining organizations (SDOs)"; - } - - identity IETF_TYPE_VENDOR { - base IETF_MODEL_TYPE; - description - "Developed by organizations (e.g., vendors) with the intent - to support a specific set of implementations under control of - that organization"; - } - - identity IETF_TYPE_USER { - base IETF_MODEL_TYPE; - description - "Developed by organizations that operate YANG-based - infrastructure including devices and orchestrators. - The intent of these models is to express the specific needs - for a certain implementation, above and beyond what is provided - by vendors"; - } - - typedef module-version-type { - type string; - description - "This type defines acceptable formats for the version of a - module. The version may be a semantic version, or a YANG - revision statement date, and may include wildcards when - included in a bundle compatibility list, e.g.: - - semver format: <major>.<minor>.<patch> - examples: 0.1.0, 2.1.0, 1.1.*, 2.*.* - - revision format: YYYY-MM-DD - example: 2016-11-31"; - } - - - -} diff --git a/src/plugins/yang/openconfig/openconfig-channel-monitor.yang b/src/plugins/yang/openconfig/openconfig-channel-monitor.yang deleted file mode 100644 index c898677..0000000 --- a/src/plugins/yang/openconfig/openconfig-channel-monitor.yang +++ /dev/null @@ -1,330 +0,0 @@ -module openconfig-channel-monitor { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/channel-monitor"; - - prefix "oc-chan-monitor"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-platform { prefix oc-platform; } - import openconfig-transport-types { prefix oc-opt-types; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This model describes operational state data for an optical - channel monitor (OCM) for optical transport line system - elements such as wavelength routers (ROADMs) and amplifiers."; - - oc-ext:openconfig-version "0.3.1"; - - revision "2017-09-08" { - description - "Correct bug with OSC interfaces"; - reference "0.3.1"; - } - - revision "2017-07-08" { - description - "Support multiple OCMs, add refs to hw ports, "; - reference "0.3.0"; - } - - revision "2017-03-28" { - description - "Added min/max/avg stats, status for media channels, OCM, APS"; - reference "0.2.0"; - } - - revision "2016-09-14" { - description - "Initial revision"; - reference "0.1.0"; - } - - - - // grouping statements - - grouping media-channel-port-config { - description - "Configuration data for a media channel source/dest port"; - - leaf port-name { - type oc-if:base-interface-ref; - description - "Reference to the corresponding node interface"; - } - } - - grouping media-channel-port-state { - description - "Operational state data for a media channel source/dest port"; - } - - grouping media-channel-source-port-top { - description - "Top-level grouping for source of the media channel"; - - container source { - description - "Top-level container for media channel source"; - - container config { - description - "Configuration data for the media channel source"; - - uses media-channel-port-config; - } - - container state { - - config false; - - description - "Operational state data for the media channel source"; - - uses media-channel-port-config; - uses media-channel-port-state; - } - } - } - - grouping media-channel-dest-port-top { - description - "Top-level grouping for destination of the media channel"; - - container dest { - description - "Top-level container for media channel destination"; - - container config { - description - "Configuration data for the media channel destination"; - - uses media-channel-port-config; - } - - container state { - - config false; - - description - "Operational state data for the media channel destination"; - - uses media-channel-port-config; - uses media-channel-port-state; - } - } - } - - grouping media-channel-psd-state { - description - "Operational state data for the media channel PSD"; - - leaf lower-frequency { - type oc-opt-types:frequency-type; - description - "Lower frequency of the specified PSD"; - } - - leaf upper-frequency { - type oc-opt-types:frequency-type; - description - "Upper frequency of the specified PSD"; - } - - leaf psd { - type oc-types:ieeefloat32; - units "nW/MHz"; - description - "Power spectral density expressed in nanowatts per - megahertz, nW/MHz. These units allow the value to often - be greater than 1.0. It also avoids dealing with zero values - for 0dBm. For example, a 40GHz wide channel - with 0dBm power would be: - 0dBm = 1mW = 10^6nW - 40GHz = 40,000MHz - 0dBm/40GHz = 10^6nW/40,000MHz = 1000/40 = 25"; - } - } - - - grouping media-channel-psd-top { - description - "Top-level grouping "; - - container channels { - description - "Enclosing container for the list of values describing - the power spectral density distribution"; - - list channel { - key "lower-frequency upper-frequency"; - config false; - description - "List of tuples describing the PSD distribution"; - - leaf lower-frequency { - type leafref { - path "../state/lower-frequency"; - } - description - "Reference to the list key"; - } - - leaf upper-frequency { - type leafref { - path "../state/upper-frequency"; - } - description - "Reference to the list key"; - } - - - container state { - - config false; - - description - "Operational state data for PSD"; - - uses media-channel-psd-state; - } - } - } - } - - grouping media-channel-config { - description - "Configuration data for media channel definitions"; - - leaf index { - type uint32; - description - "Identifier for the defined media channel"; - } - - leaf lower-frequency { - type oc-opt-types:frequency-type; - description - "The lower frequency for the spectrum defined by this media - channel"; - } - - leaf upper-frequency { - type oc-opt-types:frequency-type; - description - "The upper frequency for the spectrum defined by this media - channel"; - } - - } - - grouping channel-monitor-config { - description - "Configuration data for the optical channel monitor"; - - leaf name { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to system-supplied name of the port on the - optical channel monitor (OCM). If this port is embedded - in another card (i.e. an amplifier card) the device - should still define a port representing the OCM even if - it is internal and not physically present on the - faceplate of the card"; - } - - leaf monitor-port { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to system-supplied name of the port that the - channel monitor is physically connected to. This port - will be of type MONITOR. This port is a tap off of the - monitored-port and would be in the same card as the - monitored port. If this port is embedded in another card - (i.e. an amplifier card) the device should still define - a port representing the monitor port if it is internal - and not physically present on the faceplate of the card"; - } - } - - grouping channel-monitor-state { - description - "Operational state data "; - } - - grouping channel-monitor-top { - description - "Top-level grouping "; - - container channel-monitors { - description - "Top-level container for optical channel monitors"; - - list channel-monitor { - key "name"; - description - "List of channel monitors, keyed by channel monitor name."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "References the optical channel monitor name"; - } - - container config { - description - "Configuration data "; - - uses channel-monitor-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses channel-monitor-config; - uses channel-monitor-state; - } - - uses media-channel-psd-top; - } - } - } - - // data definition statements - - uses channel-monitor-top; - - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-if-ethernet-ext.yang b/src/plugins/yang/openconfig/openconfig-if-ethernet-ext.yang deleted file mode 100644 index 9329dcd..0000000 --- a/src/plugins/yang/openconfig/openconfig-if-ethernet-ext.yang +++ /dev/null @@ -1,106 +0,0 @@ -module openconfig-if-ethernet-ext { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/interfaces/ethernet-ext"; - - prefix "oc-eth-ext"; - - // import some basic types - import openconfig-interfaces { prefix oc-if; } - import openconfig-if-ethernet { prefix oc-eth; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module adds extensions to the base ethernet configuration - and operational state model to support additional use cases."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-07-10" { - description - "Initial version of Ethernet extensions module to add frame - size distribution stats"; - reference "0.1.0"; - } - - grouping ethernet-in-frames-size-dist { - description - "Grouping for defining the size distribution of the frames - received"; - - container in-distribution { - description - "The size distribution of the received frames."; - - leaf in-frames-64-octets { - type oc-yang:counter64; - description - "Number of packets (including bad packets) received that - were 64 bytes in length (excluding framing bits but - including FCS bytes)."; - } - - leaf in-frames-65-127-octets { - type oc-yang:counter64; - description - "Number of good and bad packets received that were - between 65 and 127 bytes in length (excluding framing bits - but including FCS bytes)."; - } - - leaf in-frames-128-255-octets { - type oc-yang:counter64; - description - "Number of good and bad packets received that were - between 128 and 255 bytes in length inclusive - (excluding framing bits but including FCS bytes)."; - } - - leaf in-frames-256-511-octets { - type oc-yang:counter64; - description - "Number of good and bad packets received that were - between 256 and 511 bytes in length inclusive - (excluding framing bits but including FCS bytes)."; - } - - leaf in-frames-512-1023-octets { - type oc-yang:counter64; - description - "Number of good and bad packets received that were - between 512 and 1023 bytes in length inclusive - (excluding framing bits but including FCS bytes)."; - } - - leaf in-frames-1024-1518-octets { - type oc-yang:counter64; - description - "Number of good and bad packets received that were - between 1024 and 1518 bytes in length inclusive - (excluding framing bits but including FCS bytes)."; - } - } - } - - // augment statements - - augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + - "oc-eth:state/oc-eth:counters" { - description - "Adds size distribution to the ethernet counters"; - - uses ethernet-in-frames-size-dist; - } - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-if-ip-ext.yang b/src/plugins/yang/openconfig/openconfig-if-ip-ext.yang deleted file mode 100644 index a5b720b..0000000 --- a/src/plugins/yang/openconfig/openconfig-if-ip-ext.yang +++ /dev/null @@ -1,169 +0,0 @@ -module openconfig-if-ip-ext { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/interfaces/ip-ext"; - - prefix "oc-ip-ext"; - - import openconfig-interfaces { prefix oc-if; } - import openconfig-if-ip { prefix oc-ip; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module adds extensions to the base IP configuration and - operational state model to support additional use cases."; - - oc-ext:openconfig-version "2.3.0"; - - revision "2018-01-05" { - description - "Add logical loopback to interface."; - reference "2.3.0"; - } - - revision "2017-12-21" { - description - "Added IPv6 router advertisement configuration."; - reference "2.1.0"; - } - - revision "2017-07-14" { - description - "Added Ethernet/IP state data; Add dhcp-client; - migrate to OpenConfig types modules; Removed or - renamed opstate values"; - reference "2.0.0"; - } - - revision "2016-12-22" { - description - "Fixes to Ethernet interfaces model"; - reference "1.1.0"; - } - - - // grouping statements - - grouping ipv6-autoconf-config { - description - "Configuration data for IPv6 address autoconfiguration"; - - leaf create-global-addresses { - type boolean; - default true; - description - "[adapted from IETF IP model RFC 7277] - - If enabled, the host creates global addresses as - described in RFC 4862."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration - Section 5.5"; - } - leaf create-temporary-addresses { - type boolean; - default false; - description - "[adapted from IETF IP model RFC 7277] - - If enabled, the host creates temporary addresses as - described in RFC 4941."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6"; - } - - leaf temporary-valid-lifetime { - type uint32; - units "seconds"; - default 604800; - description - "[adapted from IETF IP model RFC 7277] - - The time period during which the temporary address - is valid."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - - TEMP_VALID_LIFETIME"; - } - - leaf temporary-preferred-lifetime { - type uint32; - units "seconds"; - default 86400; - description - "[adapted from IETF IP model RFC 7277] - - The time period during which the temporary address is - preferred."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - - TEMP_PREFERRED_LIFETIME"; - } - } - - grouping ipv6-autoconf-state { - description - "Operational state data for IPv6 address autoconfiguration"; - - //TODO: placeholder for additional opstate for IPv6 autoconf - } - - grouping ipv6-autoconf-top { - description - "Top-level grouping for IPv6 address autoconfiguration"; - - container autoconf { - description - "Top-level container for IPv6 autoconf"; - - container config { - description - "[adapted from IETF IP model RFC 7277] - - Parameters to control the autoconfiguration of IPv6 - addresses, as described in RFC 4862."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration"; - - uses ipv6-autoconf-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses ipv6-autoconf-config; - uses ipv6-autoconf-state; - } - } - } - - // data definition statements - - // augment statements - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface/oc-ip:ipv6" { - description - "Adds address autoconfiguration to the base IP model"; - - uses ipv6-autoconf-top; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-if-poe.yang b/src/plugins/yang/openconfig/openconfig-if-poe.yang deleted file mode 100644 index f3c3bf1..0000000 --- a/src/plugins/yang/openconfig/openconfig-if-poe.yang +++ /dev/null @@ -1,99 +0,0 @@ -module openconfig-if-poe { - - yang-version "1"; - - namespace "http://openconfig.net/yang/poe"; - - prefix "oc-poe"; - - import openconfig-if-ethernet { prefix oc-eth; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-extensions { prefix oc-ext; } - - organization "OpenConfig working group"; - - contact - "Openconfig working group - www.openconfig.net"; - - description - "This module defines configuration and state data for - Power over Ethernet (PoE) based on the IEEE 802.3af - standard."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2017-09-14" { - description - "Initial public revision"; - reference "0.1.0"; - } - - grouping poe-ethernet-config { - description - "PoE ethernet config grouping"; - - leaf enabled { - type boolean; - default "true"; - description - "Enable or disable PoE in the ethernet interface."; - } - } - - grouping poe-ethernet-state { - description - "PoE ethernet state grouping"; - - leaf power-used { - type decimal64 { - fraction-digits 2; - } - units Watts; - description - "Power used by the ethernet interface in Watts."; - } - - leaf power-class { - type uint8; - description - "IEEE 802.3af Power class detected for this ethernet - interface."; - } - } - - grouping poe-ethernet-top { - description - "Ethernet top level grouping"; - - container poe { - description - "Top-level container for PoE configuration and state data"; - - container config { - description - "Configuration data for PoE"; - - uses poe-ethernet-config; - } - - container state { - config false; - - description - "Operational state data for PoE"; - - uses poe-ethernet-config; - uses poe-ethernet-state; - } - } - } - - augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet" { - description - "Adds PoE to the ethernet model."; - - uses poe-ethernet-top; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-if-tunnel.yang b/src/plugins/yang/openconfig/openconfig-if-tunnel.yang deleted file mode 100644 index 4efff64..0000000 --- a/src/plugins/yang/openconfig/openconfig-if-tunnel.yang +++ /dev/null @@ -1,109 +0,0 @@ -module openconfig-if-tunnel { - yang-version "1"; - - namespace "http://openconfig.net/yang/interfaces/tunnel"; - - prefix "oc-tun"; - - import openconfig-interfaces { prefix oc-if; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-if-ip { prefix oc-ip; } - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This model adds extensions to the OpenConfig interfaces - model to configure tunnel interfaces on a network - device."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-01-05" { - description - "Initial tunnel model"; - reference "0.1.0"; - } - - grouping tunnel-top { - description - "Top-level grouping for parameters related to - a tunnel interface."; - - container tunnel { - description - "In the case that the interface is logical tunnel - interface, the parameters for the tunnel are - specified within this subtree. Tunnel interfaces - have only a single logical subinterface associated - with them."; - - container config { - description - "Configuration parameters associated with the - tunnel interface"; - uses tunnel-config; - } - - container state { - config false; - description - "Operational state parameters associated with - the tunnel interface."; - uses tunnel-config; - } - - uses oc-ip:ipv4-top; - uses oc-ip:ipv6-top; - } - } - - grouping tunnel-config { - description - "Configuraton parameters relating to a tunnel - interface."; - - leaf src { - type oc-inet:ip-address; - description - "The source address that should be used for the - tunnel."; - } - - leaf dst { - type oc-inet:ip-address; - description - "The destination address for the tunnel."; - } - - leaf ttl { - type uint8 { - range "1..255"; - } - description - "The time-to-live (or hop limit) that should be utilised - for the IP packets used for the tunnel transport."; - } - - leaf gre-key { - type uint32; - description - "The GRE key to be specified for the tunnel. The - key is used to identify a traffic flow within - a tunnel."; - reference - "RFC2890: Key and Sequence Number Extensions to GRE"; - } - } - - augment "/oc-if:interfaces/oc-if:interface" { - description - "Augment to add tunnel configuration to interfaces"; - uses tunnel-top; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-igmp-types.yang b/src/plugins/yang/openconfig/openconfig-igmp-types.yang deleted file mode 100644 index 5fe22e7..0000000 --- a/src/plugins/yang/openconfig/openconfig-igmp-types.yang +++ /dev/null @@ -1,53 +0,0 @@ -module openconfig-igmp-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/igmp/types"; - - prefix "oc-igmp-types"; - - // import some basic types - import openconfig-extensions { prefix "oc-ext"; } - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines types related to the IGMP protocol model."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-02-19" { - description - "Initial revision."; - reference "0.1.0"; - } - - // typedef statements - - typedef igmp-version { - type uint8 { - range 1..3; - } - description - "IGMP Version."; - reference "v1 = RFC1112, v2 = RFC2236, v3 = RFC3376"; - } - - typedef igmp-interval-type { - type uint16 { - range 1..1024; - } - units "seconds"; - description - "Interval at which the router sends the IGMP query message toward - the upstream neighbor."; - reference "RFC3376 8.2 Page 40"; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-igmp.yang b/src/plugins/yang/openconfig/openconfig-igmp.yang deleted file mode 100644 index 4668ea1..0000000 --- a/src/plugins/yang/openconfig/openconfig-igmp.yang +++ /dev/null @@ -1,356 +0,0 @@ -module openconfig-igmp { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/igmp"; - - prefix "oc-igmp"; - - // import some basic types/interfaces - import openconfig-igmp-types { prefix oc-igmp-types; } - import openconfig-types { prefix "oc-types"; } - import openconfig-acl { prefix "oc-acl"; } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-interfaces { prefix oc-if; } - import ietf-inet-types { prefix "inet"; } - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "An OpenConfig model for Internet Group Management Protocol (IGMP)."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-02-19" { - description - "Initial revision."; - reference "0.1.0"; - } - - grouping admin-config { - description - "Re-usable grouping to enable or disable a particular feature."; - - leaf enabled { - type boolean; - default false; - description - "When set to true, the functionality within which this - leaf is defined is enabled, when set to false it is - explicitly disabled."; - } - } - - grouping igmp-interface-config { - description - "Configuration data for IGMP on each interface."; - - leaf interface-id { - type oc-if:interface-id; - description - "Reference to an interface on which IGMP is enabled."; - } - - uses admin-config; - - leaf version { - type oc-igmp-types:igmp-version; - description - "IGMP Version."; - } - - leaf query-interval { - type oc-igmp-types:igmp-interval-type; - description - "Interval at which the router sends the IGMP membership - queries."; - } - - leaf filter-prefixes { - type string; - // TODO work out what this should be. - // On Juniper it's a "policy" and on Cisco a sort of "class map" - description - "List used to filter joins."; - } - } - - grouping igmp-counters-per-version { - description - "Counters for each IGMP protocol version."; - - container state { - config false; - description - "Counters for each IGMP protocol version."; - - leaf v1 { - type uint32; - description - "IGMP v1."; - } - leaf v2 { - type uint32; - description - "IGMP v2."; - } - leaf v3 { - type uint32; - description - "IGMP v3."; - } - } - } - - grouping igmp-interface-counters { - description - "State and session data for IGMP on each interface."; - - - container counters { - description - "Counters avaiable on a per interface bases for IGMP."; - - container queries { - description - "IGMP membership queries."; - - container sent { - description - "Number of IGMP membership queries sent."; - uses igmp-counters-per-version; - } - - container received { - description - "Number of IGMP membership queries received."; - uses igmp-counters-per-version; - } - } - - container reports { - description - "Number of IGMP membership reports received."; - uses igmp-counters-per-version; - } - } - } - - grouping igmp-snooping-state { - description - "IGMP membership snooping state."; - - leaf group { - type inet:ipv4-address; - description - "Multicast address."; - } - - leaf source { - type inet:ipv4-address; - description - "Source address of multicast."; - } - - leaf reporter { - type inet:ipv4-address; - description - "Address of the last reporter."; - } - } - - grouping igmp-snooping-structural { - description - "IGMP membership information determined through snooping."; - - container membership-groups { - description - "List of IGMP Membership information."; - - list group { - key "group"; - config false; - description - "Multicast group membership."; - - leaf group { - type leafref { - path "../state/group"; - } - description - "Multicast address."; - } - - container state { - config false; - description - "Multicast group membership."; - - uses igmp-snooping-state; - } - } - } - } - - grouping igmp-interface-state { - description - "IGMP interface state."; - - leaf query-expires { - type oc-types:timeticks64; - description - "This timestamp indicates the time that the next query is sent. - The value is the timestamp in seconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - } - } - - grouping igmp-interface-top { - description - "Configuration and state data for IGMP on each interface."; - - container interfaces { - description - "The interfaces on which IGMP is configured."; - - list interface { - key "interface-id"; - description - "This container defines interface IGMP configuration and - state information."; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "Reference to an interface on which IGMP is enabled."; - } - - container config { - description - "IGMP interface configuration."; - - uses igmp-interface-config; - } - - container state { - config false; - description - "This container defines state information for IGMP - interfaces."; - - uses igmp-interface-state; - uses igmp-interface-config; - } - - uses igmp-interface-counters; - uses igmp-snooping-structural; - uses oc-if:interface-ref; - } - } - } - - grouping igmp-ssm-maps-config { - description - "A Source Specific Multicast (SSM) mapping. This allows - IGMP v2 hosts to be able to join in SSM environments - by translating IGMP v2 reports into IGMP v3 reports. - The request in an IGMP v2 join is sent toward the source - address found by matching the multicast address."; - - leaf source { - type inet:ipv4-address; - description - "Multicast source address."; - } - - leaf ssm-ranges { - type leafref { - path "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/" + - "oc-acl:config/oc-acl:name"; - } - description - "List of accepted source specific multicast (SSM) address - ranges."; - } - } - - grouping igmp-global-config { - description - "This grouping defines global config options for IGMP."; - - } - - grouping igmp-global-top { - description - "Top level grouping for global IGMP configuration."; - - container ssm { - description - "Source specific multicast (SSM)."; - - container mappings { - description - "A list of source specific multicast (SSM) mappings."; - - list mapping { - key "source"; - description - "A Source Specific Multicast (SSM) mapping. This allows - IGMP v2 hosts to be able to join in SSM environments - by translating IGMP v2 reports into IGMP v3 reports. - The request in an IGMP v2 join is sent toward the source - address found by matching the multicast address."; - - leaf source { - type leafref { - path "../config/source"; - } - description - "Multicast source address."; - } - - container config { - description - "Configuration for SSM maps."; - uses igmp-ssm-maps-config; - } - container state { - config false; - description - "State for SSM maps."; - uses igmp-ssm-maps-config; - } - } - } - } - } - - grouping igmp-top { - description - "Top-level grouping for IGMP."; - - container igmp { - description - "Top-level IGMP configuration and operational state."; - - container global { - description - "Global IGMP configuration and operational state."; - uses igmp-global-top; - } - - uses igmp-interface-top; - } - } - - // data definition statements -} diff --git a/src/plugins/yang/openconfig/openconfig-isis-lsdb-types.yang b/src/plugins/yang/openconfig/openconfig-isis-lsdb-types.yang deleted file mode 100644 index 5e53fd4..0000000 --- a/src/plugins/yang/openconfig/openconfig-isis-lsdb-types.yang +++ /dev/null @@ -1,686 +0,0 @@ -module openconfig-isis-lsdb-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/isis-lsdb-types"; - - prefix "oc-isis-lsdb-types"; - - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module contains general LSDB type definitions for use in - ISIS YANG model. "; - - oc-ext:openconfig-version "0.4.0"; - - revision "2018-05-14" { - description - "Update LSDB model to correct Extended IS reach TLV - bug. This change is backwards incompatible due to - adding an additional level of hierarchy to support - multiple instances of the TLV."; - reference "0.4.0"; - } - - revision "2017-07-26" { - description - "Update LSDB and fix bugs."; - reference "0.3.2"; - } - - revision "2017-05-15" { - description - "Refactor LSDB."; - reference "0.3.0"; - } - - revision "2017-01-13" { - description - "Remove top-level /isis container"; - reference "0.2.1"; - } - - revision "2016-12-15" { - description - "Add segment routing to IS-IS module"; - reference "0.2.0"; - } - - revision "2016-10-18" { - description - "Initial revision of IS-IS models."; - reference "0.1.0"; - } - - identity ISIS_TLV_TYPE { - description - "Base identity for an ISIS TLV type."; - } - - identity ISIS_SUBTLV_TYPE { - description - "Base identity for an ISIS SUB-TLV type."; - } - - identity IS_REACHABILITY_SUBTLVS_TYPE { - base "ISIS_SUBTLV_TYPE"; - description - "Base identity for an ISIS TLV 22, 23, 222, 223, 141 SUB-TLV - type."; - } - - identity IP_REACHABILITY_SUBTLVS_TYPE { - base "ISIS_SUBTLV_TYPE"; - description - "Base identity for an ISIS TLV 135, 235, 236, 237 SUB-TLV - type."; - } - - identity ROUTER_CAPABILITY_SUBTLVS_TYPE { - base "ISIS_SUBTLV_TYPE"; - description - "Base identity for an ISIS TLV 242 SUB-TLV type."; - } - - identity AREA_ADDRESSES { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 1. Intermediate System to Intermediate System Intra- - Domain Routeing Exchange Protocol for use in Conjunction with - the Protocol for Providing the Connectionless-mode Network - Service (ISO 8473), International Standard 10589: 2002, Second - Edition, 2002."; - reference - "ISO 10589"; - } - - identity IIS_NEIGHBORS { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 2. Intermediate System to Intermediate System Intra- - Domain Routeing Exchange Protocol for use in Conjunction with - the Protocol for Providing the Connectionless-mode Network - Service (ISO 8473), International Standard 10589: 2002, Second - Edition, 2002."; - reference - "ISO 10589"; - } - - identity INSTANCE_ID { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 7. An Instance Identifier (IID) to uniquely - identify an IS-IS instance. When the IID = 0, the list of - supported ITIDs MUST NOT be present. An IID-TLV with IID = 0 - MUST NOT appear in an SNP or LSP. When the TLV appears (with a - non-zero IID) in an SNP or LSP, exactly one ITID. MUST be - present indicating the topology with which the PDU is - associated. If no ITIDs or multiple ITIDs are present or the - IID is zero, then the PDU MUST be ignored"; - reference - "RFC6822: IS-IS Multi-Instance"; - } - - identity AUTHENTICATION { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 10.Intermediate System to Intermediate System Intra- - Domain Routeing Exchange Protocol for use in Conjunction with - the Protocol for Providing the Connectionless-mode Network - Service (ISO 8473) International Standard 10589: 2002, Second - Edition, 2002."; - reference - "ISO 10589"; - } - - identity PURGE_OI { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 13. If an IS generates a purge, it SHOULD include - this TLV in the purge with its own system ID. If an IS - receives a purge that does not include this TLV, then it SHOULD - add this TLV with both its own system ID and the system ID of - the IS from which it received the purge. This allows ISs - receiving purges to log the system ID of the originator, or the - upstream source of the purge."; - reference - "RFC6232: Purge Originator Identification TLV"; - } - - identity LSP_BUFFER_SIZE { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 14. The maximum MTU that the advertising system can - receive, expressed in bytes."; - reference - "ISO 10589: LSP Buffer Size TLV"; - } - - identity EXTENDED_IS_REACHABILITY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 22. An extended IS reachability TLV that has a - different data structure to TLV 2 that introduces the use of - sub-TLV object-group."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering"; - } - - identity IS_NEIGHBOR_ATTRIBUTE { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 23. Identical in format to TLV 22 and included in - Original LSPs or Extended LSPs. Regardless of the type of LSP - in which the TLVs appear, the information pertains to the - neighbor relationship between the Originating System and the IS - identified in the TLV"; - reference - "RFC5311: Simplified Extension of Link State PDU (LSP) Space - for IS-IS"; - } - - identity ISIS_ALIAS_ID { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 24. IS-Alias TLV which extension-capable ISs to - recognize the Originating System of an Extended LSP set. It - identifies the Normal system-id of the Originating System"; - reference - "RFC5311: Simplified Extension of Link State PDU (LSP) Space - for IS-IS"; - } - - identity IPV4_INTERNAL_REACHABILITY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 128. TLV defines IP addresses within the routing - domain reachable directly via one or more interfaces on this - Intermediate system"; - reference - "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302: - Domain-Wide Prefix Distribution with Two-Level IS-IS"; - } - - identity NLPID { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 129. TLV defines the set Network Layer Protocol - Identifiers for Network Layer protocols that this Intermediate - System is capable of relaying"; - reference - "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and - Dual Environments"; - } - - identity IPV4_EXTERNAL_REACHABILITY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 130. TLV defines IP addresses outside the routing - domain reachable via interfaces on this Intermediate system. - This is permitted to appear multiple times, and in an LSP with - any LSP number. However, this field must not appear in - pseudonode LSPs"; - reference " - RFC1195: OSI ISIS for IP and Dual Environments. RFC5302: - Domain-Wide Prefix Distribution with Two-Level IS-IS"; - } - - identity IPV4_INTERFACE_ADDRESSES { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 132. The IP address of one or more interfaces - corresponding to the SNPAs enabled on this Intermediate system - (i.e., one or more IP addresses of this router). This is - permitted to appear multiple times, and in an LSP with any LSP - number."; - reference - "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual - Environments"; - } - - identity IPV4_TE_ROUTER_ID { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 134. Traffic Engineering router ID TLV that contains - the 4-octet router ID of the router originating the LSP"; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering"; - } - - identity EXTENDED_IPV4_REACHABILITY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 135. Extended IP reachability TLV that provides for a - 32-bit metric and adds one bit to indicate that a prefix has - been redistributed _down_ in the hierarchy"; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering"; - } - - identity DYNAMIC_NAME { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 137. The Dynamic hostname TLV is optional. This TLV - may be present in any fragment of a non-pseudonode LSP. The - value field identifies the symbolic name of the router - originating the LSP. This symbolic name can be the FQDN for the - router, it can be a subset of the FQDN, or it can be any string - operators want to use for the router."; - reference - "RFC6233: IS-IS Registry Extension for Purges, RFC 5301: Dynamic - Hostname Exchange Mechanism for IS-IS."; - } - - identity IPV4_SRLG { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 138. IPv4 Shared Risk Link Group TLV"; - reference - "RFC5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS)"; - } - - identity IPV6_SRLG { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 139. IPv6 Shared Risk Link Group"; - reference - "RFC6119: IPv6 Traffic Engineering in IS-IS"; - } - - identity IPV6_TE_ROUTER_ID { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 140. The IPv6 TE Router ID TLV contains a 16-octet - IPv6 address. A stable global IPv6 address MUST be used, so that - the router ID provides a routable address, regardless of the - state of a node's interfaces. If a router does not implement - traffic engineering, it MAY include or omit the IPv6 TE Router - ID TLV. If a router implements traffic engineering for IPv6, it - MUST include this TLV in its LSP. This TLV MUST NOT be included - more than once in an LSP."; - reference - "RFC6119: IPv6 Traffic Engineering in IS-IS."; - } - - identity MT_ISN { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 222. TLV is aligned with extended IS reachability TLV - type 22 beside an additional two bytes in front at the beginning - of the TLV that. indicate MT membership."; - reference - "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate - System to Intermediate Systems (IS-ISs)"; - } - - identity MT_IS_NEIGHBOR_ATTRIBUTE { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 223. Is is identical in format to TLV 222. In the - event that there is a need to advertise in Extended LSPs such - information associated with neighbors of the Originating System, - it is necessary to define new TLVs to carry the sub-TLV - information."; - reference - "RFC5311: Simplified Extension of Link State PDU (LSP) Space for - IS-IS"; - } - - identity MULTI_TOPOLOGY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 229. This MT TLV can advertise up to 127 MTs. It is - announced in IIHs and LSP fragment 0, and can occur multiple - times. The resulting MT set SHOULD be the union of all the MT - TLV occurrences in the packet. Any other IS-IS PDU occurrence of - this TLV MUST be ignored. Lack of MT TLV in hellos and fragment - zero LSPs MUST be interpreted as participation of the - advertising interface or router in MT ID #0 only. If a router - advertises MT TLV, it has to advertise all the MTs it - participates in, specifically including topology ID #0 also."; - reference - "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate - System to Intermediate Systems (IS-ISs)"; - } - - identity IPV6_INTERFACE_ADDRESSES { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 232. IPv6 Interface Address TLV that maps directly to - the IP Interface Address TLV in [RFC1195]. We necessarily modify - the contents to be 0-15 16-octet IPv6 interface addresses - instead of 0-63 4-octet IPv4 interface addresses"; - reference "RFC5308: Routing IPv6 with IS-IS."; - } - - identity MT_IPV4_REACHABILITY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 235. TLV is aligned with extended IP reachability TLV - type 135 beside an additional two bytes in front to indicate MT - membership"; - reference - "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate - System to Intermediate Systems (IS-ISs)"; - } - - identity IPV6_REACHABILITY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 236. The IPv6 Reachability TLV describes network - reachability through the specification of a routing prefix, - metric information, a bit to indicate if the prefix is being - advertised down from a higher level, a bit to indicate if the - prefix is being distributed from another routing protocol, and - OPTIONALLY the existence of Sub-TLVs to allow for later - extension."; - reference - "RFC5308: Routing IPv6 with IS-IS"; - } - - identity MT_IPV6_REACHABILITY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 237. TLV is aligned with IPv6 Reachability TLV type - 236 beside an additional two bytes in front to indicate MT - membership."; - reference - "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate - System to Intermediate Systems (IS-ISs)."; - } - - identity ROUTER_CAPABILITY { - base "ISIS_TLV_TYPE"; - description - "ISIS TLV 242. IS-IS TLV named CAPABILITY, formed of multiple - sub-TLVs, which allows a router to announce its capabilities - within an IS-IS level or the entire routing domain."; - reference - "RFC4971: Intermediate System to Intermediate System (IS-IS) - Extensions for Advertising Router Information."; - } - - //sub-TLVs for TLVs 22, 23, 141, 222, 223 - - identity IS_REACHABILITY_ADMIN_GROUP { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 3. Administrative group(color)."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering"; - } - - identity IS_REACHABILITY_LINK_ID { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 4. Link Local/Remote Identifiers."; - reference - "RFC5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS)"; - } - - identity IS_REACHABILITY_IPV4_INTERFACE_ADDRESS { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 6. IPv4 Interface Address."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering."; - } - - identity IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 8. IPv4 Neighbor Address."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering."; - } - - identity IS_REACHABILITY_MAX_LINK_BANDWIDTH { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 9. Maximum Link Bandwidth."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering."; - } - - identity IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 10. Maximum Reservable Bandwidth."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering."; - } - - identity IS_REACHABILITY_UNRESERVED_BANDWIDTH { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 11. Unreserved bandwidth."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering."; - } - - identity IS_REACHABILITY_IPV6_INTERFACE_ADDRESS { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 12. IPv6 Interface Address."; - reference - "RFC6119: IPv6 Traffic Engineering in IS-IS."; - } - - identity IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 13. IPv6 Neighbor Address."; - reference - "RFC6119: IPv6 Traffic Engineering in IS-IS."; - } - - identity IS_REACHABILITY_EXTENDED_ADMIN_GROUP { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 14. Extended Administrative Group."; - reference - "RFC7308: Extended Administrative Groups in MPLS Traffic - Engineering (MPLS-TE)."; - } - - identity IS_REACHABILITY_TE_DEFAULT_METRIC { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 18. TE Default Metric."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering."; - } - - identity IS_REACHABILITY_LINK_ATTRIBUTES { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 19. Link Attributes."; - reference - "RFC5209: Definition of an IS-IS Link Attribute Sub-TLV."; - } - - identity IS_REACHABILITY_LINK_PROTECTION_TYPE { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 20. Link Protection Type."; - reference - "RFC5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS)"; - } - - identity IS_REACHABILITY_BANDWIDTH_CONSTRAINTS { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 22. Bandwidth Constraints."; - reference - "RFC4124: Protocol Extensions for Support of Diffserv-aware MPLS - Traffic Engineering."; - } - - identity IS_REACHABILITY_UNCONSTRAINED_LSP { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 23. Unconstrained LSP."; - reference - "RFC5330: A Link-Type sub-TLV to Convey the Number of Traffic - Engineering Label Switched Paths Signalled with Zero - Reserved Bandwidth across a Link."; - } - - identity IS_REACHABILITY_ADJ_SID { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 31. Adjacency Segment Identifier."; - reference - "draft-ietf-isis-segment-routing-extensions."; - } - - identity IS_REACHABILITY_ADJ_LAN_SID { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 32. Adjacency LAN Segment Identifier."; - reference - "draft-ietf-isis-segment-routing-extensions."; - } - - identity IS_REACHABILITY_LINK_DELAY { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 33. Unidirectional Link Delay."; - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; - } - - identity IS_REACHABILITY_MIN_MAX_LINK_DELAY { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 34. Min/Max Unidirectional Link Delay."; - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; - } - - identity IS_REACHABILITY_LINK_DELAY_VARIATION { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 35. Unidirectional Link Delay Variation."; - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; - } - - identity IS_REACHABILITY_LINK_LOSS { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 36. Unidirectional Link Loss Delay."; - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; - } - - identity IS_REACHABILITY_RESIDUAL_BANDWIDTH { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 37. Unidirectional Residual Bandwidth."; - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; - } - - identity IS_REACHABILITY_AVAILABLE_BANDWIDTH { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 38. Unidirectional Available Bandwidth."; - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; - } - - identity IS_REACHABILITY_UTILIZED_BANDWIDTH { - base "IS_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 39. Unidirectional Utilized Bandwidth."; - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; - } - - //sub-TLVs for TLVs 135, 235, 236, 237 - identity IP_REACHABILITY_TAG { - base "IP_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 1. 32-bit Administrative Tag."; - reference - "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 - Reachability."; - } - - identity IP_REACHABILITY_TAG64 { - base "IP_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 2. 64-bit Administrative Tag."; - reference - "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 - Reachability."; - } - - identity IP_REACHABILITY_PREFIX_SID { - base "IP_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 3. Prefix Segment Identifier."; - reference - "draft-ietf-isis-segment-routing-extension."; - } - - identity IP_REACHABILITY_PREFIX_FLAGS { - base "IP_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 4. Prefix Attribute Flags."; - reference - "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 - Reachability."; - } - - identity IP_REACHABILITY_IPV4_ROUTER_ID { - base "IP_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 11. IPv4 Source Router ID."; - reference - "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 - Reachability."; - } - - identity IP_REACHABILITY_IPV6_ROUTER_ID { - base "IP_REACHABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 12. IPv6 Source Router ID."; - reference - "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 - Reachability."; - } - - - //sub-TLVs for TLVs 242 - - identity ROUTER_CAPABILITY_SR_CAPABILITY { - base "ROUTER_CAPABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 2. Segment Routing Capability."; - reference - "draft-ietf-isis-segment-routing-extensions."; - } - - identity ROUTER_CAPABILITY_SR_ALGORITHM { - base "ROUTER_CAPABILITY_SUBTLVS_TYPE"; - description - "sub-TLV 19. Segment Routing Algorithm."; - reference - "draft-ietf-isis-segment-routing-extensions."; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-isis-lsp.yang b/src/plugins/yang/openconfig/openconfig-isis-lsp.yang deleted file mode 100644 index 02f8b79..0000000 --- a/src/plugins/yang/openconfig/openconfig-isis-lsp.yang +++ /dev/null @@ -1,3592 +0,0 @@ -submodule openconfig-isis-lsp { - - belongs-to openconfig-isis { - prefix oc-isis; - } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-inet-types { prefix "inet"; } - import openconfig-isis-types { prefix "oc-isis-types"; } - import openconfig-isis-lsdb-types { prefix "oc-isis-lsdb-types"; } - import openconfig-types { prefix "oc-types"; } - import openconfig-mpls-types { prefix "oc-mpls-types"; } - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net "; - - description - "This sub-module describes a YANG model for the IS-IS Link State - Database (LSDB). - - Portions of this code were derived from IETF RFCs relating to the - IS-IS protocol. - Please reproduce this note if possible. - IETF code is subject to the following copyright and license: - Copyright (c) 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)."; - - oc-ext:openconfig-version "0.4.0"; - - revision "2018-05-14" { - description - "Update LSDB model to correct Extended IS reach TLV - bug. This change is backwards incompatible due to - adding an additional level of hierarchy to support - multiple instances of the TLV."; - reference "0.4.0"; - } - - revision "2017-07-26" { - description - "Update LSDB and fix bugs."; - reference "0.3.2"; - } - - revision "2017-05-15" { - description - "Refactor LSDB."; - reference "0.3.0"; - } - - revision "2017-01-13" { - description - "Remove top-level /isis container"; - reference "0.2.1"; - } - - revision "2016-12-15" { - description - "Add segment routing to IS-IS module"; - reference "0.2.0"; - } - - revision "2016-10-18" { - description - "Initial revision of IS-IS models."; - reference "0.1.0"; - } - - typedef isis-metric-flags { - type enumeration { - enum INTERNAL { - description - "When this flag is not set, internal metrics are in use."; - } - enum UNSUPPORTED { - description - "When this flag (referred to as the S-bit) is set, then - the metric is unsupported."; - } - } - description - "Type definition for flags used in IS-IS metrics"; - } - - grouping isis-lsdb-link-characteristics-a-bit { - description - "Definition of the A bit, as used in IS-IS link delay TLVs."; - - leaf a-bit { - type boolean; - description - "The A bit is set when the measured value of this parameter - exceeds its configured maximum threshold. The A bit is cleared - when the measured value falls below its configured reuse - threshold."; - } - } - - grouping isis-lsdb-tlv-nlpid-state { - description - "NLP ID parameters for IS-IS."; - - leaf-list nlpid { - type enumeration { - enum IPV4 { - description "IPv4 Address family."; - } - enum IPV6 { - description "IPv6 Address family."; - } - } - description - "Protocol supported. IPv4 is defined as (0xcc) and IPv6 - - (0x8e)"; - reference - "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and - Dual Environments. TLV 129. "; - } - } - - grouping isis-lsdb-subtlv-type-state { - description - "Per-subTLV type operational state parameters for ISIS."; - - leaf type { - type identityref { - base oc-isis-lsdb-types:ISIS_SUBTLV_TYPE; - } - description - "The type of subTLV being described. The type of subTLV is - expressed as a canonical name."; - } - } - - grouping isis-lsdb-tlv-type-state { - description - "Per-subTLV type operational state parameters for ISIS."; - - leaf type { - type identityref { - base oc-isis-lsdb-types:ISIS_TLV_TYPE; - } - description - "The type of TLV being described. The type of TLV is - expressed as a canonical name."; - } - } - - grouping is-reachability-neighbor-state { - description - "This grouping defines is-reachability neighbor."; - - container subtlvs { - description - "This container describes IS Neighbor sub-TLVs."; - - list subtlv { - key "type"; - - description - "List of subTLV types in the LSDB for the specified TLV."; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to the sub-TLV type."; - } - - container state { - description - "State parameters of IS neighbor state"; - - uses isis-lsdb-subtlv-type-state; - } - - container admin-group { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_ADMIN_GROUP'" { - description - "Only include the administrative group container when - the sub-TLV is type 3"; - } - description - "This container defines sub-TLV 3."; - - container state { - description - "State parameters of sub-TLV 3."; - - leaf-list admin-group { - type uint32; - description - "The administrative group sub-TLV contains a 4-octet - bit mask assigned by the network administrator. Each - set bit corresponds to one administrative group - assigned to the interface. By convention, the least - significant bit is referred to as group 0, and the - most significant bit is referred to as group 31."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. - sub-TLV 3: TLV 22,23,141,222, 223."; - } - } - } - - container link-id { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_ID'" { - description - "Only include the link identifier container when the - sub-TLV is type 4"; - } - description - "This container defines sub-TLV 4."; - - container state { - description - "State parameters of sub-TLV 4."; - - leaf local { - type uint32; - description - "The value field of this sub-TLV contains 4 octets of - Link Local Identifier followed by 4 octets of Link - Remote Identifier."; - reference - "RFC5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS). sub-TLV 3: TLV - 22,23,141,222, 223."; - } - - leaf remote { - type uint32; - description - "If the Link Remote Identifier is unknown, it is set - to 0."; - reference - "RFC5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS). sub-TLV 3: TLV - 22,23,141,222, 223."; - } - } - } - - container ipv4-interface-address { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_IPV4_INTERFACE_ADDRESS'" { - description - "Only include the IPv4 interface address group container - when the sub-TLV is type 6"; - } - description - "This container defines sub-TLV 6."; - - container state { - description - "State parameters of sub-TLV 6."; - - leaf-list address { - type inet:ipv4-address; - description - "A 4-octet IPv4 address for the interface described by - the (main) TLV. This sub-TLV can occur multiple - times."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. - sub-TLV 6: TLV 22,23,41,222,223."; - } - } - } - - container ipv4-neighbor-address { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS'" { - description - "Only include the IPv4 neighbor address container when - the sub-TLV is type 8."; - } - description - "This container defines sub-TLV 8."; - - container state { - description - "State parameters of sub-TLV 8."; - - leaf-list address { - type inet:ipv4-address; - description - "A single IPv4 address for a neighboring router on - this link. This sub-TLV can occur multiple times."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. - sub-TLV 8: TLV 22,23, 141,222,223."; - } - } - } - - container max-link-bandwidth { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_MAX_LINK_BANDWIDTH'" { - description - "Only include the maximum link bandwidth container when - the sub-TLV is type 9."; - } - description - "This container defines sub-TLV 9."; - - container state { - description - "State parameters of sub-TLV 9."; - - leaf bandwidth { - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The maximum bandwidth that can be used on this link - in this direction (from the system originating the LSP - to its neighbors). It is encoded in 32 bits in IEEE - floating point format. The units are bytes (not - bits!) per second."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. - sub-TLV 9: TLV 22,23,141,222,223."; - } - } - } - - container max-reservable-link-bandwidth { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH'" { - description - "Only include the maximum reservable link bandwidth - container when the sub-TLV type is 10."; - } - description - "This container defines sub-TLV 10."; - - container state { - description - "State parameters of sub-TLV 10."; - - leaf bandwidth { - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The maximum amount of bandwidth that can be reserved - in this direction on this link. Note that for - oversubscription purposes, this can be greater than - the bandwidth of the link. It is encoded in 32 bits - in IEEE floating point format. The units are bytes - (not bits!) per second."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. - Sub-TLV 10: TLV 22,23,141,222,223."; - } - } - } - - container unreserved-bandwidth { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_UNRESERVED_BANDWIDTH'" { - description - "Only include the unreserved bandwidth container when - the sub-TLV type is 11."; - } - description - "This container defines unreserved-bandwidth. The units - are bytes per second."; - - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. sub- - TLV 11: TLV 22,23,141,222,223"; - - list setup-priority { - key "priority"; - - leaf priority { - type leafref { - path "../state/priority"; - } - description - "Reference to the setup priority to which the - unreserved bandwidth corresponds."; - } - - description - "Setup priority (0 through 7) for unreserved - bandwidth."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 11."; - - leaf priority { - type uint8 { - range "0..7"; - } - description - "Setup priority level of 0 through 7 to be used by - Unreserved Bandwidth sub-TLV 11."; - } - - leaf bandwidth { - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The amount of bandwidth reservable in this - direction on this link. Note that for - oversubscription purposes, this can be greater than - the bandwidth of the link. It contains eight 32-bit - IEEE floating point numbers(one for each priority). - The units are bytes (not bits!) per second. The - values correspond to the bandwidth that can be - reserved with a setup priority of 0 through 7, - arranged in increasing order with priority 0 - occurring at the start of the sub-TLV, and priority - 7 at the end of the sub-TLV."; - } - } - } - } - - container ipv6-interface-address { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_IPV6_INTERFACE_ADDRESS'" { - description - "Only include the IPv6 interface address when the - sub-TLV type is 12."; - } - description - "This container defines sub-TLV 12."; - - container state { - description - "State parameters of sub-TLV 12."; - - leaf-list address { - type inet:ipv6-address; - description - "Contains a 16-octet IPv6 address for the interface - described by the containing Extended IS Reachability - TLV. This sub-TLV can occur multiple times."; - reference - "RFC6119: IPv6 Traffic Engineering in IS-IS. sub-TLV - 12: TLV 22,23,141,222,223."; - } - } - } - - container ipv6-neighbor-address { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS'" { - description - "Only include the IPv6 neighbor address when the - sub-TLV type is 13."; - } - description - "This container defines sub-TLV 13."; - - container state { - description - "State parameters of sub-TLV 13."; - - leaf-list address { - type inet:ipv6-address; - description - "Contains a 16-octet IPv6 address for a neighboring - router on the link described by the (main) TLV. This - sub-TLV can occur multiple times."; - reference - "RFC6119: IPv6 Traffic Engineering in IS-IS. sub-TLV - 13: ISIS TLV 22,23,141,222,223."; - } - } - } - - container extended-admin-group { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_EXTENDED_ADMIN_GROUP'" { - description - "Only include the extended admin group when the - sub-TLV type is 14."; - } - description - "This container defines sub-TLV 14."; - container state { - description - "State parameters of sub-TLV 14."; - - leaf-list extended-admin-group { - type uint32; - description - "The extended-admin-group sub-TLV is used in addition - to the Administrative Groups when it is desirable to - make more than 32 colors available for advertisement - in a network."; - reference - "RFC7308: Extended Administrative Groups in MPLS - Traffic Engineering (MPLS-TE). sub-TLV 14: TLV - 22,23,141,222,223."; - } - } - } - - container te-default-metric { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_TE_DEFAULT_METRIC'" { - description - "Only include the default traffic engineering metric - container when the sub-TLV type is 18."; - } - description - "This container defines sub-TLV 18."; - container state { - description - "State parameters of sub-TLV 18."; - - leaf metric { - type uint32; - description - "This metric is administratively assigned and can be - used to present a differently weighted topology to - traffic engineering SPF calculations. To preclude - overflow within a traffic engineering SPF - implementation, all metrics greater than or equal to - MAX_PATH_METRIC SHALL be considered to have a metric - of MAX_PATH_METRIC."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. - sub-TLV 18: TLV 22,23,141,222,223."; - } - } - } - - container link-attributes { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_ATTRIBUTES'" { - description - "Only include the link attributes container when the - sub-TLV is type 19."; - } - description - "This container defines link-attributes."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 19."; - - leaf-list local-protection { - type enumeration { - enum LOCAL_PROTECTION { - description - "If set, local protection is available for the - link."; - } - enum LINK_EXCLUDED { - description - "If set, the link is excluded from local - protection."; - } - } - description - "Link local-protection attributes."; - - reference - "RFC5029: Definition of an IS-IS Link Attribute Sub- - TLV. TLV 22, sub-TLV 19."; - } - } - } - - container link-protection-type { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_PROTECTION_TYPE'" { - description - "Only include the link protection type container when - the sub-TLV type 20."; - } - description - "ISIS LSDB parameters relating to the type of link - protection offered."; - - container state { - description - "State parameters of sub-TLV 20."; - - leaf-list type { - type enumeration { - enum EXTRA_TRAFFIC { - description - "If set the link has extra traffic protection. If - the link is of type Extra Traffic, it means that - the link is protecting another link or links. The - LSPs on a link of this type will be lost if any of - the links it is protecting fail."; - } - enum UNPROTECTED { - description - "If set, the link is unprotected. If the link is - of type Unprotected, it means that there is no - other link protecting this link. The LSPs on a - link of this type will be lost if the link - fails."; - } - enum SHARED { - description - "If set, the link has shared protection. If the - link is of type Shared, it means that there are - one or more disjoint links of type Extra Traffic - that are protecting this link. These Extra - Traffic links are shared between one or more links - of type Shared."; - } - enum ONE_ONE { - description - "If set, the link has dedicated 1:1 protection. If - the link is of type Dedicated 1:1, it means that - there is one dedicated disjoint link of type Extra - Traffic that is protecting this link."; - } - enum PLUS_ONE { - description - "If set, the link has dedicated 1+1 protection. If - the link is of type Dedicated 1+1, it means that a - dedicated disjoint link is protecting this link. - However, the protecting link is not advertised in - the link state database and is therefore not - available for the routing of LSPs."; - } - enum ENHANCED { - description - "If set the link has enhanced protection. If the - link is of type Enhanced, it means that a - protection scheme that is more reliable than - Dedicated 1+1, e.g., 4 fiber BLSR/MS-SPRING, is - being used to protect this link."; - } - } - description - "Link protection capabilities."; - reference - "RFC5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS). sub-TLV 20: - TLV 22,23,141,222,223."; - } - } - } - - container bandwidth-constraints { - when "../state/type =" + - "'oc-isis-lsdb-types:IS_REACHABILITY_BANDWIDTH_CONSTRAINTS'" { - description - "Only include the bandwidth constraints container when - the sub-TLV is type 22."; - } - description - "This container defines bandwidth-constraints. For DS-TE, - the existing Maximum Reservable link bandwidth parameter - is retained, but its semantics is generalized and - interpreted as the aggregate bandwidth constraint across - all Class-Types"; - - reference - "RFC4124: Protocol Extensions for Support of Diffserv- - aware MPLS Traffic Engineering. sub-TLV 22: TLV 22, 23, - 141, 222,223"; - - list bandwidth-constraint { - key "model-id"; - - description - "List of the Bandwidth Constraints sub-TLV instances - present in the TLV."; - - leaf model-id { - type leafref { - path "../state/model-id"; - } - description - "Reference to the model ID associated with the - instance of the Bandwidth Constraints sub-TLV."; - } - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 22."; - - leaf model-id { - type uint8; - description - "Identifier for the Bandwidth Constraints Model - currently in use by the LSR initiating the IGP - advertisement."; - } - } - - container constraints { - description - "Constraints contained within the Bandwidth - Constraints sub-TLV"; - - list constraint { - key "constraint-id"; - - description - "List of the constraints within the Bandwidth - Constraints sub-TLV. The BC0 level is indicated by - the constraint-id leaf being set to 0, with BCN - being indicated by constraint-id N."; - - leaf constraint-id { - type leafref { - path "../state/constraint-id"; - } - description - "Reference to the unique ID for the BCN level."; - } - - container state { - description - "Operational state parameters of the BCN level"; - - leaf constraint-id { - type uint32; - description - "Unique reference for the bandwidth constraint level. BC0 - is indicated by this leaf being set to zero, with BCN - represented by this leaf being set to N."; - } - - leaf bandwidth { - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The bandwidth constraint, expressed as a 32-bit IEEE - floating point number expressed in bytes per second."; - } - } - } - } - } - } - - container unconstrained-lsp { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_UNCONSTRAINED_LSP'" { - description - "Only include the unconstrained LSP container when the - sub-TLV is type 23."; - } - description - "This container defines sub-TLV 23."; - container state { - description - "State parameters of sub-TLV 23."; - - uses isis-lsdb-subtlv-type-state; - - leaf count { - type uint16; - description - "Unconstrained TE LSP count(TE Label Switched Paths - (LSPs) signalled with zero bandwidth)."; - reference - "RFC5330: A Link-Type sub-TLV to Convey the Number of - Traffic Engineering Label Switched Paths Signalled - with Zero Reserved Bandwidth across a Link. sub-TLV - 23: TLV 22,23,141,222,223"; - } - } - } - - container adjacency-sids { - when "../state/type = 'oc-isis-lsdb-types:IS_REACHABILITY_ADJ_SID'" { - description - "Only include the adjacency SIDs container when the - sub-TLV type is 31"; - } - - description - "This container defines segment routing adjacency SIDs."; - - list adjacency-sid { - key "value"; - - description - "Adjacency Segment-IDs List. An IGP-Adjacency Segment is - an IGP segment attached to a unidirectional adjacency or - a set of unidirectional adjacencies. By default, an IGP- - Adjacency Segment is local to the node which advertises - it."; - - leaf value { - type leafref { - path "../state/value"; - } - description - "Reference to the value of the Adjacency-SID."; - } - - container state { - description - "State parameters of Adjacency-SID."; - - leaf value { - type uint32; - description - "Adjacency-SID value."; - } - - leaf-list flags { - type enumeration { - enum ADDRESS_FAMILY { - description - "Address-family flag. When unset, the Adj-SID - refers to an adjacency with outgoing IPv4 - encapsulation. If set then the Adj-SID refers to - an adjacency with outgoing IPv6 encapsulation."; - } - enum BACKUP { - description - "Backup flag. When set, the Adj-SID refers to an - adjacency being protected (e.g.: using IPFRR or - MPLS-FRR)."; - } - enum VALUE { - description - "Value flag. When set, the SID carries a value - (instead of an index). By default the flag is - SET."; - } - enum LOCAL { - description - "Local flag. When set, the value/index carried - by the SID has local significance. By default - the flag is SET."; - } - enum SET { - description - "Set flag. When set, the S-Flag indicates that - the Adj-SID refers to a set of adjacencies."; - } - } - description - "Flags associated with Adj-Segment-ID."; - } - - leaf weight { - type uint8; - description - "Value that represents the weight of the Adj-SID for - the purpose of load balancing."; - } - } - } - - reference - "draft-ietf-isis-segment-routing-extensions. sub-TLV 31: - TLV 22, 222, 223, 141. "; - } - - container lan-adjacency-sids { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_ADJ_LAN_SID'" { - description - "Only include the LAN adjacency SID container when - the sub-TLV is type 32."; - } - description - "This container defines segment routing LAN adjacency - SIDs"; - - list lan-adjacency-sid { - key "value"; - - description - "Adjacency Segment-IDs List. An IGP-Adjacency Segment is - an IGP segment attached to a unidirectional adjacency or - a set of unidirectional adjacencies. By default, an IGP- - Adjacency Segment is local to the node which advertises - it."; - - leaf value { - type leafref { - path "../state/value"; - } - description - "Reference to the value of the LAN Adjacency-SID."; - } - - container state { - description - "State parameters of LAN Adjacency-SID."; - - leaf value { - type uint32; - description - "LAN Adjacency-SID value."; - } - - leaf-list flags { - type enumeration { - enum ADDRESS_FAMILY { - description - "Address-family flag. When unset, the Adj-SID - refers to an adjacency with outgoing IPv4 - encapsulation. If set then the Adj-SID refers to - an adjacency with outgoing IPv6 encapsulation."; - } - enum BACKUP { - description - "Backup flag. When set, the Adj-SID refers to an - adjacency being protected (e.g.: using IPFRR or - MPLS-FRR)."; - } - enum VALUE { - description - "Value flag. When set, the SID carries a value - (instead of an index). By default the flag is - SET."; - } - enum LOCAL { - description - "Local flag. When set, the value/index carried - by the SID has local significance. By default - the flag is SET."; - } - enum SET { - description - "Set flag. When set, the S-Flag indicates that - the Adj-SID refers to a set of adjacencies."; - } - } - description - "Flags associated with LAN-Adj-Segment-ID."; - } - - leaf weight { - type uint8; - description - "Value that represents the weight of the Adj-SID - for the purpose of load balancing."; - } - - leaf neighbor-id { - type oc-isis-types:system-id; - description - "System ID of the neighbor associated with the LAN- - Adj-Segment-ID value."; - } - } - } - - reference - "draft-ietf-isis-segment-routing-extensions. sub-TLV 32: - TLV 22, 222, 223, 141."; - } - - container link-delay { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_DELAY'" { - description - "Include the link delay container only when the sub-TLV - type is type 33."; - } - description - "This container defines unidirectional link delay."; - - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric - Extensions. sub-TLV 33: TLV 22, 23, 141, 222, 223."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 33."; - - uses isis-lsdb-link-characteristics-a-bit; - - leaf delay { - type uint32; - units microseconds; - description - "Average link delay value (in microseconds) between - two directly connected IS-IS neighbors over a - configurable interval."; - } - } - } - - container min-max-link-delay { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_MIN_MAX_LINK_DELAY'" { - description - "Only include the min/max link delay container when the - sub-TLV is type 34."; - } - description - "This container defines min/max link delay."; - - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric - Extensions. sub-TLV 34: TLV 22, 23, 141, 222, 223."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 34."; - - uses isis-lsdb-link-characteristics-a-bit; - - leaf min-delay { - type uint32; - units microseconds; - description - "Minimum measured link delay value(in microseconds) - between two directly connected IS-IS neighbors over a - configurable interval."; - } - - leaf max-delay { - type uint32; - units microseconds; - description - "Maximum measured link delay value(in microseconds) - between two directly connected IS-IS neighbors over a - configurable interval."; - } - } - } - - container link-delay-variation { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_DELAY_VARIATION'" { - description - "Only include the link delay variation container when - the sub-TLV is type 35."; - } - description - "This container defines unidirectional link delay - variation."; - - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric - Extensions. sub-TLV 35: TLV 22,23,141,222,223."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 35."; - - leaf delay { - type uint32; - units microseconds; - description - "Average link delay between two directly connected IS- - IS neighbors over a configurable interval."; - } - } - } - - container link-loss { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_LOSS'" { - description - "Only include the link loss container when the sub-TLV - is type 36."; - } - description - "This container defines unidirectional link loss delay."; - - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric - Extensions. sub-TLV 36: TLV 22, 23, 141, 222, 223."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 36."; - - uses isis-lsdb-link-characteristics-a-bit; - - leaf link-loss { - type uint32; - description - "Link packet loss as a percentage of the total traffic - sent over a configurable interval. The basic unit is - 0.000003%, where (2^24 - 2) is 50.331642%. This value - is the highest packet-loss percentage that can be - expressed (the assumption being that precision is more - important on high-speed links than the ability to - advertise loss rates greater than this, and that high- - speed links with over 50% loss are unusable). - Therefore, measured values that are larger than the - field maximum SHOULD be encoded as the maximum - value."; - } - } - } - - container residual-bandwidth { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_RESIDUAL_BANDWIDTH'" { - description - "Only include the resdiual bandwidth container when the - sub-TLV is type 37."; - } - description - "This container defines unidirectional residual - bandwidth."; - - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric - Extensions. sub-TLV 37: TLV 22, 23, 141, 222, 223."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 37."; - - leaf bandwidth { - type oc-types:ieeefloat32; - units "bytes per second"; - description - "Residual bandwidth on a link,forwarding adjacency - [RFC4206], or bundled link in IEEE floating-point - format with units of bytes per second. For a link or - forwarding adjacency, residual bandwidth is defined to - be the Maximum Bandwidth [RFC5305] minus the bandwidth - currently allocated to RSVP-TE label switched paths. - For a bundled link, residual bandwidth is defined to - be the sum of the component link residual - bandwidths."; - } - } - } - - container available-bandwidth { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_AVAILABLE_BANDWIDTH'" { - description - "Only include the available bandwdith container when the - sub-TLV is type 38."; - } - description - "This container defines unidirectional lavailable - bandwidth."; - - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric - Extensions. sub-TLV 38: TLV 22, 23, 141, 222, 223."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 38."; - - uses isis-lsdb-subtlv-type-state; - - leaf bandwidth { - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The available bandwidth on a link, forwarding - adjacency, or bundled link in IEEE floating-point - format with units of bytes per second. For a link or - forwarding adjacency, available bandwidth is defined - to be residual bandwidth minus the measured bandwidth - used for the actual forwarding of non-RSVP-TE label - switched path packets. For a bundled link, available - bandwidth is defined to be the sum of the component - link available bandwidths minus the measured bandwidth - used for the actual forwarding of non-RSVP-TE label - switched path packets. For a bundled link, available - bandwidth is defined to be the sum of the component - link available bandwidths."; - } - } - } - - container utilized-bandwidth { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_REACHABILITY_UTILIZED_BANDWIDTH'" { - description - "Only include the utilized bandwidth container when the - TLV is type 39."; - } - description - "This container defines unidirectional utilized - bandwidth."; - - reference - "RFC7810: IS-IS Traffic Engineering (TE) Metric - Extensions. sub-TLV 39: TLV 22, 23, 141, 222, 223."; - - container state { - description - "State parameters of IS Extended Reachability sub-TLV - 39."; - - uses isis-lsdb-subtlv-type-state; - - leaf bandwidth { - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The bandwidth utilization on a link, forwarding - adjacency, or bundled link in IEEE floating-point - format with units of bytes per second. For a link or - forwarding adjacency, bandwidth utilization represents - the actual utilization of the link (i.e., as measured - by the advertising node). For a bundled link, - bandwidth utilization is defined to be the sum of the - component link bandwidth utilizations."; - } - } - } - } - } - - uses isis-lsdb-undefined-subtlv; - } - - grouping isis-lsdb-undefined-tlv { - description - "Grouping for unknown TLVs in the IS-IS LSDB"; - - container undefined-tlvs { - description - "Surrounding container for a list of unknown TLVs."; - - list undefined-tlv { - key "type"; - description - "List of TLVs that are not defined within the model, or are - not recognised by the system."; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to the undefined TLV's type"; - } - - container state { - description - "State parameters of the undefined TLV."; - - uses undefined-tlv-state; - } - } - } - } - - grouping isis-lsdb-undefined-subtlv { - description - "Grouping for unknown Sub-TLVs in the IS-IS LSDB."; - - container undefined-subtlvs { - description - "This container describes undefined ISIS TLVs."; - - list undefined-subtlv { - key "type"; - - description - "Sub-TLVs that are not defined in the model or not - recognised by system."; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to the type of the undefined sub-TLV"; - } - - container state { - description - "State parameters of the undefined sub-TLV."; - - uses undefined-subtlv-state; - } - } - } - } - - grouping isis-lsdb-prefix-state { - description - "This grouping defines prefix reachability."; - - container subtlvs { - description - "This container describes IS prefix sub-TLVs."; - - list subtlv { - key "type"; - - description - "List of subTLV types in the LSDB for the specified TLV."; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to the sub-TLV type"; - } - - container state { - description - "State parameters for a prefix."; - - uses isis-lsdb-subtlv-type-state; - } - - container tag { - when "../state/type = " + - "'oc-isis-lsdb-types:IP_REACHABILITY_TAG'" { - description - "Only include the tag container when the sub-TLV is type - 1."; - } - description - "This container defines sub-TLV 1."; - - container state { - description - "State parameters of sub-TLV 1."; - - leaf-list tag32 { - type uint32; - description - "List of 32-bit tags associated with the prefix. Example - uses of these tags include carrying BGP standard (or - extended) communities and controlling redistribution - between levels and areas, different routing protocols, - or multiple instances of IS-IS running on the same - router."; - reference - "RFC5130: A Policy Control Mechanism in IS-IS Using - Administrative Tags. sub-TLV 1."; - } - } - } - - container tag64 { - when "../state/type = " + - "'oc-isis-lsdb-types:IP_REACHABILITY_TAG64'" { - description - "Only include the tag64 container when the sub-TLV is type - 2."; - } - description - "This container defines sub-TLV 2."; - - container state { - description - "State parameters of sub-TLV 2."; - - leaf-list tag64 { - type uint64; - description - "List of 64-bit tags associated with the prefix. Example - uses of these tags include carrying BGP standard (or - extended) communities and controlling redistribution - between levels and areas, different routing protocols, - or multiple instances of IS-IS running on the same - router."; - reference - "RFC5130: A Policy Control Mechanism in IS-IS Using - Administrative Tags. sub-TLV 2."; - } - } - } - - container flags { - when "../state/type = " + - "'oc-isis-lsdb-types:IP_REACHABILITY_PREFIX_FLAGS'" { - description - "Only include the flags container when the sub-TLV is type - 4."; - } - description - "This container defines sub-TLV 4."; - - container state { - description - "State parameters of sub-TLV 4."; - - uses isis-lsdb-subtlv-type-state; - - leaf-list flags { - type enumeration { - enum EXTERNAL_FLAG { - description - "External prefix flag. Set if the prefix has been - redistributed from another protocol. This includes - the case where multiple virtual routers are - supported and the source of the redistributed prefix - is another IS-IS instance."; - } - enum READVERTISEMENT_FLAG { - description - "Readvertisement flag. Set when the prefix has been - leaked from one level to another (upwards or - downwards)."; - } - enum NODE_FLAG { - description - "Node flag. Set when the prefix identifies the - advertising router, i.e., the prefix is a host - prefix advertising a globally reachable address - typically associated with a loopback address."; - } - } - description - "Additional prefix reachability flags."; - - reference - "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and - IPv6 Reachability. sub-TLV 4."; - } - } - } - - container ipv4-source-router-id { - when "../state/type = " + - "'oc-isis-lsdb-types:IP_REACHABILITY_IPV4_ROUTER_ID'" { - description - "Only include the IPv4 Source Router ID container when - the sub-TLV is type 11."; - } - description - "This container defines sub-TLV 11."; - - container state { - description - "State parameters of sub-TLV 11."; - - uses isis-lsdb-subtlv-type-state; - - leaf router-id { - type inet:ipv4-address; - description - "IPv4 Source router ID address. In cases where the - advertisement is an identifier for the advertising - router (e.g., with the N-flag set in the Prefix - Attribute Flags sub-TLV), it may be useful for other - routers to know the source of the advertisement. When - reachability advertisement is leaked from one level to - another, Router ID advertised is always the Router ID - of the IS-IS instance that originated the - advertisement. This would be true even if the prefix - had been learned from another protocol."; - reference - "RFC7794: IS-IS Prefix Attributes for Extended IPv4 - and IPv6 Reachability. sub-TLV 11"; - } - } - } - - container ipv6-source-router-id { - when "../state/type = " + - "'oc-isis-lsdb-types:IP_REACHABILITY_IPV6_ROUTER_ID'" { - description - "Only include the IPv6 Source Router ID container when - the sub-TLV is type 12."; - } - description - "This container defines sub-TLV 12."; - - container state { - description - "State parameters of sub-TLV 12."; - - uses isis-lsdb-subtlv-type-state; - - leaf router-id { - type inet:ipv6-address; - description - "IPv6 Source router ID address. In cases where the - advertisement is an identifier for the advertising - router (e.g., with the N-flag set in the Prefix - Attribute Flags sub-TLV), it may be useful for other - routers to know the source of the advertisement. When - reachability advertisement is leaked from one level to - another, Router ID advertised is always the Router ID - of the IS-IS instance that originated the - advertisement. This would be true even if the prefix - had been learned from another protocol."; - reference - "RFC7794: IS-IS Prefix Attributes for Extended IPv4 - and IPv6 Reachability. sub-TLV 12."; - } - } - } - - uses isis-lsdb-prefix-sid-state; - } - } - - uses isis-lsdb-undefined-subtlv; - } - - grouping isis-lsdb-prefix-sid-state { - description - "This grouping defines ISIS Prefix SID."; - - container prefix-sids { - when "../state/type = " + - "'oc-isis-lsdb-types:IP_REACHABILITY_PREFIX_SID'" { - description - "Only include the Prefix SID container when - the sub-TLV is type 3."; - } - description - "This container defines segment routing extensions for - prefixes."; - - reference - "draft-ietf-isis-segment-routing-extensions. sub-TLV 3: TLV - 135, 235, 236, 237."; - - list prefix-sid { - key "value"; - - description - "Prefix Segment-ID list. IGP-Prefix Segment is an IGP segment - attached to an IGP prefix. An IGP-Prefix Segment is global - (unless explicitly advertised otherwise) within the SR/IGP - domain."; - - leaf value { - type leafref { - path "../state/value"; - } - description - "Reference to the value of the prefix SID."; - } - - container state { - description - "State parameters for Prefix-SID."; - - leaf value { - type uint32; - description - "IGP Prefix-SID value."; - } - - leaf-list flags { - type enumeration { - enum READVERTISEMENT { - description - "Readvertisment flag. When set, the prefix to which - this Prefix-SID is attached, has been propagated by - the router either from another level or from - redistribution."; - } - enum NODE { - description - "Node flag. When set, the Prefix-SID refers to the - router identified by the prefix. Typically, the - N-Flag is set on Prefix-SIDs attached to a router - loopback address."; - } - enum NO_PHP { - description - "Penultimate-Hop-Popping flag. When set, then the - penultimate hop MUST NOT pop the Prefix-SID before - delivering the packet to the node that advertised - the Prefix-SID."; - } - enum EXPLICIT_NULL { - description - "Explicit-Null flag. When set, any upstream neighbor - of the Prefix-SID originator MUST replace the - Prefix-SID with a Prefix-SID having an Explicit-NULL - value (0 for IPv4 and 2 for IPv6) before forwarding - the packet."; - } - enum VALUE { - description - "Value flag. When set, the Prefix-SID carries a - value (instead of an index). By default the flag is - UNSET."; - } - enum LOCAL { - description - "Local flag. When set, the value/index carried by - the Prefix-SID has local significance. By default - the flag is UNSET."; - } - } - description - "Flags associated with Prefix Segment-ID."; - } - - leaf algorithm { - type uint8; - description - "Prefix-SID algorithm to be used for path computation."; - } - } - } - } - } - - grouping isis-lsdb-common-metric-specification { - description - "Common definitions of the metric in IS-IS."; - - container default-metric { - description - "This container defines ISIS Default Metric."; - - container state { - description - "State parameters for default-metric."; - - leaf flags { - type enumeration { - enum INTERNAL { - description - "When set to zero, indicates internal metrics."; - } - } - description - "ISIS Default-Metric Flags."; - } - - leaf metric { - type oc-isis-types:narrow-metric; - description - "ISIS default metric value. This is a metric understood by - every Intermediate system in the domain. Each circuit - shall have a positive integral value assigned for this - metric. The value may be associated with any objective - function of the circuit, but by convention is intended to - measure the capacity of the circuit for handling traffic, - for example, its throughput in bits-per-second. Higher - values indicate a lower capacity."; - } - } - } - - container delay-metric { - description - "This container defines the ISIS delay metric."; - - container state { - description - "State parameters of delay-metric."; - - leaf metric { - type oc-isis-types:narrow-metric; - description - "ISIS delay metric value. This metric measures the transit - delay of the associated circuit. It is an optional metric, - which if assigned to a circuit shall have a positive - integral value. Higher values indicate a longer transit - delay."; - } - - leaf-list flags { - type isis-metric-flags; - description - "ISIS Delay Metric Flags."; - } - } - } - - container expense-metric { - description - "This container defines the ISIS expense metric."; - - container state { - description - "State parameters of expense-metric."; - - leaf metric { - type oc-isis-types:narrow-metric; - description - "ISIS expense metric value. This metric measures the - monetary cost of utilising the associated circuit. It is - an optional metric, which if assigned to a circuit shall - have a positive integral value1). Higher values indicate a - larger monetary expense."; - } - - leaf-list flags { - type isis-metric-flags; - description - "ISIS Expense Metric Flags."; - } - } - } - - container error-metric { - description - "This container defines the ISIS error metric."; - - container state { - description - "State parameters of error-metric."; - - leaf metric { - type oc-isis-types:narrow-metric; - description - "ISIS error metric value. This metric measures the - residual error probability of the associated circuit. It - is an optional metric, which if assigned to a circuit - shall have a non-zero value. Higher values indicate a - larger probability of undetected errors on the circuit."; - } - - leaf-list flags { - type isis-metric-flags; - description - "IS-IS error metric flags."; - } - } - } - } - - grouping isis-lsdb-neighbor { - description - "This grouping defines attributes of an ISIS standard - neighbor."; - - container state { - description - "State parameters of IS standard neighbor."; - - leaf system-id { - type oc-isis-types:system-id; - description - "System-ID of IS neighbor."; - } - } - - uses isis-lsdb-common-metric-specification; - - } - - grouping ipv4-prefix-attributes-state { - description - "This group defines attributes of an IPv4 standard prefix."; - - container state { - description - "State parameters of IPv4 standard prefix."; - - leaf up-down { - type boolean; - description - "The up/down bit. Set if a prefix is advertised from a - higher level to a lower level (e.g., level 2 to level 1), - indicating that the prefix has traveled down the hierarchy. - Prefixes that have the up/down bit set may only be - advertised down the hierarchy, i.e., to lower levels. When a - prefix is first injected into IS-IS, the bit is UNSET."; - } - - leaf prefix { - type inet:ipv4-prefix; - description - "IPv4 prefix contained within reachability TLVs."; - } - } - - uses isis-lsdb-common-metric-specification; - } - - grouping isis-lsdb-common-mt-id { - description - "Common definition of the multi-topology ID"; - - leaf mt-id { - type uint16 { - range "0..4095"; - } - description - "Multi-topology ID"; - } - } - - grouping ipv4-prefix-extended-state { - description - "This grouping defines attributes of an IPv4 extended prefix."; - - container state { - description - "State parameters of an IPv4 extended prefix."; - uses ipv4-prefix-extended-params-state; - } - - uses isis-lsdb-prefix-state; - } - - grouping ipv4-mt-prefix-extended-state { - description - "State parameters that relate to an IPv4 prefix in a - multi-topology context."; - - container state { - description - "State parameters of an IPv4 extended prefix."; - uses ipv4-prefix-extended-params-state; - uses isis-lsdb-common-mt-id; - } - - uses isis-lsdb-prefix-state; - } - - grouping ipv4-prefix-extended-params-state { - description - "State parameters that relate to an IPv4 prefix"; - - leaf up-down { - type boolean; - description - "The up/down bit. Set if a prefix is advertised from a - higher level to a lower level (e.g., level 2 to level 1), - indicating that the prefix has traveled down the hierarchy. - Prefixes that have the up/down bit set may only be - advertised down the hierarchy, i.e., to lower levels. When a - prefix is first injected into IS-IS, the bit is UNSET."; - } - - leaf s-bit { - type boolean; - description - "The Sub-TLV present bit. If UNSET, the octets of Sub-TLVs - are not present. Otherwise, the bit is set and the octet - following the prefix will contain the length of the Sub-TLV - portion of the structure."; - } - - leaf prefix { - type inet:ipv4-prefix; - description - "IPv4 prefix contained within extended reachability TLVs."; - } - - leaf metric { - type oc-isis-types:wide-metric; - description - "ISIS metric value."; - } - } - - grouping ipv6-prefix-extended-state { - description - "State parameters relating to an IPv6 prefix."; - - container state { - description - "State parameters of IPv6 prefix attributes"; - - uses ipv6-prefix-extended-params-state; - } - - uses isis-lsdb-prefix-state; - } - - grouping ipv6-mt-prefix-extended-state { - description - "State parameters relating to a multi-topology IPv6 - prefix."; - - container state { - description - "State parameters relating an IPv6 prefix attribute"; - uses ipv6-prefix-extended-params-state; - uses isis-lsdb-common-mt-id; - } - - uses isis-lsdb-prefix-state; - } - - grouping ipv6-prefix-extended-params-state { - description - "Common parameters of an IPv6 extended prefix."; - - leaf up-down { - type boolean; - description - "The up/down bit. Set if a prefix is advertised from a - higher level to a lower level (e.g., level 2 to level 1), - indicating that the prefix has traveled down the hierarchy. - Prefixes that have the up/down bit set may only be - advertised down the hierarchy, i.e., to lower levels. When a - prefix is first injected into IS-IS, the bit is UNSET."; - } - - leaf x-bit { - type boolean; - description - "The external bit. Set when the prefix was distributed into - IS-IS from another routing protocol."; - } - - leaf s-bit { - type boolean; - description - "The sub-tlv present bit. If UNSET, the octets of Sub-TLVs - are not present. Otherwise, the bit is set and the octet - following the prefix will contain the length of the Sub-TLV - portion of the structure."; - } - - leaf prefix { - type inet:ipv6-prefix; - description - "IPv6 prefix contained within extended reachability TLVs."; - } - - leaf metric { - type oc-isis-types:wide-metric; - description - "ISIS metric value."; - } - } - - grouping isis-lsdb-common-extisreach-neighbors { - description - "Common structure for the Extended IS Reachability and IS - Reachability Neighbour attributes."; - - container neighbors { - description - "This container describes IS neighbors."; - - list neighbor { - key "system-id"; - description - "This list describes ISIS extended neighbors and - reachability attributes."; - - leaf system-id { - type leafref { - path "../state/system-id"; - } - description - "Reference to the neighboring system's system ID."; - } - - container state { - description - "State parameters corresponding to the extended - neighbour."; - - leaf system-id { - type oc-isis-types:system-id; - description - "System-id of the neighbor."; - } - } - - container instances { - description - "This list contains all instances of an adjacency - between the originating IS and the remote IS. - Multiple instances are used where there are - parallel adjacencies between two systems."; - - list instance { - key "id"; - - description - "Instance of the TLV to the remote IS neighbor."; - - leaf id { - type leafref { - path "../state/id"; - } - description - "Reference to the unique identifier for - the instance of the extended IS - reachability sub-TLV."; - } - - container state { - description - "State parameters of extended neighbor"; - - leaf id { - type uint64; - description - "Unique identifier for the instance of the - TLV for the IS neighbor. The instance - ID is not required to be consistent across - across readvertisements of the LSP."; - } - - leaf metric { - type oc-isis-types:wide-metric; - description - "Metric value."; - } - } - uses is-reachability-neighbor-state; - } - } - } - } - } - - grouping isis-lsdb-mtis-common { - description - "Common grouping for structure used within the multi-topology IS - neighbour and multi-topology IS neighbour attribute TLVs."; - - container neighbors { - description - "MT-IS neigbor attributes."; - - list neighbor { - key "mt-id system-id"; - description - "This container describes IS neighbors."; - - leaf mt-id { - type leafref { - path "../state/mt-id"; - } - description - "Reference to the topology that the neighbor is - within."; - } - - leaf system-id { - type leafref { - path "../state/system-id"; - } - description - "Reference to the System ID of the neighbor."; - } - - container state { - description - "Operational state parameters related to the - MT ISN TLV."; - - uses mt-isis-neighbor-state; - } - - container instances { - description - "This list contains all instances of an adjacency - between the originating and remote IS. Multiple - instances are used to indicate where there are - parallel adjacencies between systems."; - - list instance { - key "id"; - - description - "Instance of TLV-222 between the originating - and remote IS."; - - leaf id { - type leafref { - path "../state/id"; - } - description - "Reference to the unique identifier for the - instance of the multi-topology IS neighbor - TLV instance."; - } - - uses mt-isis-neighbor-instance; - } - } - } - } - } - - grouping mt-isis-neighbor-state { - description - "This grouping defines state parameters that are related to - each neighbour entry for the MT ISN TLV."; - - leaf mt-id { - type uint16 { - range "0..4095"; - } - description - "Identifier of a topology being announced."; - } - - leaf system-id { - type oc-isis-types:system-id; - description - "System-id of the IS neighbor."; - } - } - - grouping mt-isis-neighbor-instance { - description - "This grouping defines list of ISIS multi-topology neighbors for - extended ISIS LSP (multiple system IDs)."; - - container state { - description - "State parameters of MT neighbor."; - - leaf metric { - type oc-isis-types:wide-metric; - description - "ISIS metric value."; - } - - leaf id { - type uint64; - description - "Unique identifier for the TLV instance for the - neighbor. The ID is not required to be consistent - across readvertisements of the LSP."; - } - } - uses is-reachability-neighbor-state; - } - - grouping isis-lsdb-generic-tlv { - description - "Generic TLV encoding grouping."; - - leaf type { - type uint8; - description - "TLV Type."; - } - - leaf length { - type uint8; - description - "TLV length."; - } - - leaf value { - type binary; - description - "TLV value."; - } - } - - grouping undefined-tlv-state { - description - "Generic grouping defining an unknown TLV."; - - uses isis-lsdb-generic-tlv; - } - - grouping undefined-subtlv-state { - description - "Generic grouping defining an unknown sub-TLV."; - - uses isis-lsdb-generic-tlv; - } - - grouping lsp-state { - description - "This grouping defines ISIS LSP state information."; - - leaf lsp-id { - type leafref { - path "../state/lsp-id"; - } - - description - "A reference to the Link State PDU ID."; - } - - container state { - description - "State parameters of Link State PDU."; - - leaf lsp-id { - type oc-isis-types:lsp-id; - description - "LSP ID of the LSP."; - } - - leaf maximum-area-addresses { - type uint8; - description - "Number of area addresses permitted for this ISs area. 0 - indicates the IS only supports three area addresses (by - default). Any number inclusive of 1 and 254 indicates the - number of areas allowed."; - } - - leaf version { - type uint8; - default 1; - description - "PDU version. This is set to 1."; - } - - leaf version2 { - type uint8; - default 1; - description - "PDU version2. This is set to 1"; - } - - leaf id-length { - type uint8; - description - "Length of the ID field of NSAP addresses and NETs used in - this routing domain."; - } - - leaf pdu-type { - type enumeration { - enum LEVEL_1 { - description "This enum describes ISIS level 1 PDU."; - } - enum LEVEL_2 { - description "This enum describes ISIS level 2 PDU."; - } - } - description - "Link State PDU type."; - } - - leaf remaining-lifetime { - type uint16; - units "seconds"; - description - "Remaining lifetime in seconds before the LSP expiration."; - } - - leaf sequence-number { - type uint32; - description - "Sequence number of the LSP."; - } - - leaf checksum { - type uint16; - description - "Checksum of the LSP."; - } - - leaf pdu-length { - type uint16; - description - "Total length of the LSP."; - } - - leaf-list flags { - type enumeration { - enum PARTITION_REPAIR { - description - "When set, the originator supports partition - repair."; - } - enum ATTACHED_ERROR { - description - "When set, the originator is attached to another - area using the referred metric."; - } - enum ATTACHED_EXPENSE { - description - "When set, the originator is attached to another - area using the referred metric."; - } - enum ATTACHED_DELAY { - description - "When set, the originator is attached to another - area using the referred metric."; - } - enum ATTACHED_DEFAULT { - description - "When set, the originator is attached to another - area using the referred metric."; - } - enum OVERLOAD { - description - "When set, the originator is overloaded, and must - be avoided in path calculation."; - } - } - description - "LSP Type-Block flags."; - } - - leaf is-type { - type oc-isis-types:level-number; - description - "Type of neighboring system."; - } - } - - container tlvs { - description - "This container defines Link State PDU State TLVs."; - - list tlv { - key "type"; - - description - "List of TLV types in the LSDB for the specified LSP."; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to the TLV's type."; - } - - container state { - config false; - description - "Operational state parameters relating to the specified - LSP"; - - uses isis-lsdb-tlv-type-state; - } - - container area-address { - when "../state/type = 'oc-isis-lsdb-types:AREA_ADDRESSES'" { - description - "Include area address parameters only when the TLV type - is TLV 1."; - } - - description - "This container defines TLV 1."; - - container state { - description - "State parameters of ISIS TLV 1."; - - leaf-list address { - type oc-isis-types:area-address; - description - "Area adress(es) of the IS. Set of manual area - addresses of this IS."; - reference - "ISO 10589 Intermediate System to Intermediate System - Intra- Domain Routeing Exchange Protocol for use in - Conjunction with the Protocol for Providing the - Connectionless-mode Network Service (ISO 8473 ) - International Standard 10589: 2002, Second Edition, - 2002. TLV 1."; - } - } - } - - container lsp-buffer-size { - when "../state/type = " + - "'oc-isis-lsdb-types:LSP_BUFFER_SIZE'" { - description - "Include the LSP buffer size parameters only when the - TLV type is TLV 14."; - } - - description - "This container defines TLV 14 - the LSP Buffer Size - TLV."; - - container state { - description - "State parameters of TLV 14."; - - leaf size { - type uint16; - units "bytes"; - description - "The maximum MTU that the advertising system can - receive, expressed in bytes."; - reference - "ISO 10589 Intermediate System to Intermediate System - Intra- Domain Routeing Exchange Protocol for use in - Conjunction with the Protocol for Providing the - Connectionless-mode Network Service (ISO 8473 ) - International Standard 10589: 2002, Second Edition, - 2002. TLV 14."; - } - } - } - - container nlpid { - when "../state/type = 'oc-isis-lsdb-types:NLPID'" { - description - "Include NLPID specification only when the TLV type is - TLV 129."; - } - - description - "This container defines TLV 129."; - - container state { - description - "State parameters of ISIS TLV 129."; - - uses isis-lsdb-tlv-nlpid-state; - } - } - - container hostname { - when "../state/type = 'oc-isis-lsdb-types:DYNAMIC_NAME'" { - description - "Include the dynamic hostname TLV only when the TLV is - type 137."; - } - description - "This container defines TLV 137."; - - container state { - description - "State parameters of ISIS TLV 137."; - - leaf-list hostname { - type string; - description - "Name of the node."; - - reference - "RFC6233: IS-IS Registry Extension for Purges, RFC - 5301: Dynamic Hostname Exchange Mechanism for IS-IS. - TLV 137"; - } - } - } - - container ipv4-interface-addresses { - when "../state/type = " + - "'oc-isis-lsdb-types:IPV4_INTERFACE_ADDRESSES'" { - description - "Include the IPv4 interface addresses TLV only when the - TLV is type 132."; - } - description - "This container defines TLV 132."; - - container state { - description - "State parameters of ISIS TLV 132."; - - leaf-list address { - type inet:ipv4-address; - description - "IPv4 address(es) of the interface corresponding to - the SNPA over which this PDU is to be transmitted."; - reference - "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and - Dual Environments. TLV 132."; - } - } - } - - container ipv6-interface-addresses { - when "../state/type = " + - "'oc-isis-lsdb-types:IPV6_INTERFACE_ADDRESSES'" { - description - "Include the IPv6 interface addresses TLV only when the - TLV is type 232."; - } - description - "This container defines TLV 232."; - - container state { - description - "State parameters of ISIS TLV 232."; - - leaf-list address { - type inet:ipv6-address; - description - "IPv6 interface addresses of the node. MUST contain - only the non-link-local IPv6 addresses assigned to the - IS."; - reference - "RFC5308: Routing IPv6 with IS-IS. TLV 232."; - } - } - } - - container ipv4-te-router-id { - when "../state/type = " + - "'oc-isis-lsdb-types:IPV4_TE_ROUTER_ID'" { - description - "Include the IPv4 traffic engineering router ID TLV only - when the TLV is type 134."; - } - description - "This container defines TLV 134."; - - container state { - description - "State parameters of ISIS TLV 134."; - - leaf-list router-id { - type inet:ipv4-address; - description - "IPv4 Traffic Engineering router ID of the node. For - traffic engineering, it guarantees that we have a - single stable address that can always be referenced in - a path that will be reachable from multiple hops away, - regardless of the state of the node's interfaces."; - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. TLV - 134."; - } - } - } - - container ipv6-te-router-id { - when "../state/type = " + - "'oc-isis-lsdb-types:IPV6_TE_ROUTER_ID'" { - description - "Include the IPv6 traffic engineering router ID TLV only - when the TLV is type 140."; - } - description - "This container defines TLV 140."; - - container state { - description - "State parameters of ISIS TLV 140."; - - leaf-list router-id { - type inet:ipv6-address; - description - "IPv6 Traffic Engineering router ID of the node. For - traffic engineering, it guarantees that we have a - single stable address that can always be referenced in - a path that will be reachable from multiple hops away, - regardless of the state of the node's interfaces."; - reference - "RFC6119: IPv6 Traffic Engineering in IS-IS. TLV - 140."; - } - } - } - - container instance-ids { - when "../state/type = 'oc-isis-lsdb-types:INSTANCE_ID'" { - description - "Include the ISIS Instance Identifier TLV only when the - TLV is type 7."; - } - description - "This container defines ISIS Instance Identifier TLV."; - reference "RFC6822: IS-IS Multi-Instance. TLV 7."; - - list instance-id { - key "instance-id"; - - description - "A list of instance IDs received within TLV 7 within an - IS-IS LSP. In the case that more than one instance of - TLV 7 is included in the LSP, the instance IDs specified - within the instances are concatenated within this - list."; - - leaf instance-id { - type leafref { - path "../state/instance-id"; - } - description - "Reference to the unique instance ID."; - } - container state { - description - "State parameters of ISIS TLV 7."; - - leaf instance-id { - type uint16; - description - "An Instance Identifier (IID) to uniquely identify - an IS-IS instance. When the IID = 0, the list of - supported ITIDs MUST NOT be present. An IID-TLV with - IID = 0 MUST NOT appear in an SNP or LSP. When the - TLV appears (with a non-zero IID) in an SNP or LSP, - exactly one ITID. MUST be present indicating the - topology with which the PDU is associated. If no - ITIDs or multiple ITIDs are present or the IID is - zero, then the PDU MUST be ignored."; - } - - leaf-list topology-id { - type uint16; - description - "Instance-Specific Topology Identifiers (ITIDs)."; - } - } - } - } - - container ipv4-srlgs { - when "../state/type = 'oc-isis-lsdb-types:IPV4_SRLG'" { - description - "Include the IPv4 SRLG TLV only when the TLV is type - 138."; - } - description - "This container defines ISIS SRLG TLV 138."; - - reference - "RFC5307: IS-IS Extensions in Support of Generalized - Multi-Protocol Label Switching (GMPLS). TLV 138."; - - list ipv4-srlg { - key "instance-number"; - - description - "Instance of the IPv4 SRLG TLV"; - - leaf instance-number { - type leafref { - path "../state/instance-number"; - } - description - "Reference to the instance number of TLV 138."; - } - - container state { - description - "State parameters of TLV 138."; - - leaf instance-number { - type uint32; - description - "An arbitrary unsigned 32-bit integer used to - disambiguate the instance of TLV 138. The instance - identifier is synthesised by the system - and may be renumbered for the same SRLG definition - in subsequent advertised LSPs if (and only if) the - entire list of SRLGs is replaced."; - } - - leaf system-id { - type oc-isis-types:system-id; - description - "Neighbor system ID."; - } - - leaf psn-number { - type uint8; - description - "Pseudonode number if the neighbor is on a LAN - interface."; - } - - leaf-list flags { - type enumeration { - enum NUMBERED { - description - "When set, the interface is numbered, whereas if - unset indicates that the interface is - unnumbered."; - } - } - description - "SRLG flags."; - } - - leaf ipv4-interface-address { - type inet:ipv4-address; - description - "IPv4 interface address."; - } - - leaf ipv4-neighbor-address { - type inet:ipv4-address; - description - "IPv4 neighbor address."; - } - - leaf-list srlg-value { - type uint32; - description - "List of SRLG values."; - } - } - } - } - - container ipv6-srlgs { - when "../state/type = 'oc-isis-lsdb-types:IPV6_SRLG'" { - description - "Include the IPv6 SRLG TLV only when the TLV is type - 139."; - } - description - "This container defines ISIS SRLG TLV."; - - reference - "RFC6119: IPv6 Traffic Engineering in IS-IS. TLV 139."; - - list ipv6-srlg { - key "instance-number"; - - description - "Instance of the IPv6 SRLG TLV."; - - leaf instance-number { - type leafref { - path "../state/instance-number"; - } - description - "Reference to the instance number of the IPv6 Shared - Risk Link Group (SRLG) TLV."; - } - - container state { - description - "State parameters of TLV 139."; - - leaf instance-number { - type uint32; - description - "An arbitrary unsigned 32-bit integer used to - disambiguate the instance of TLV 138. The instance - identifier is synthesised by the system - and may be renumbered for the same SRLG definition - in subsequent advertised LSPs if (and only if) the - entire list of SRLGs is replaced."; - } - - leaf system-id { - type oc-isis-types:system-id; - description - "Neighbor system ID."; - } - - leaf psn-number { - type uint8; - description - "Pseudonode number if the neighbor is on a LAN - interface."; - } - - leaf-list flags { - type enumeration { - enum NA { - description - "When set, the IPv6 neighbour address is - included, whereas if unset, it is omitted"; - } - } - description - "IPv6 SRLG flags."; - } - - leaf ipv6-interface-address { - type inet:ipv6-address; - description - "IPv6 interface address or Link Local Identifier."; - } - - leaf ipv6-neighbor-address { - type inet:ipv6-address; - description - "IPv6 neighbor address or Link Remote Identifier."; - } - - leaf-list srlg-value { - type uint32; - description - "SRLG values."; - } - } - } - } - - container purge-oi { - when "../state/type = 'oc-isis-lsdb-types:PURGE_OI'" { - description - "Only include the purge originator identitication TLV - when the TLV type is 13."; - } - description - "This container defines ISIS purge TLV."; - - reference - "RFC6232: Purge Originator Identification TLV for IS-IS. - TLV 13."; - - container state { - description - "State parameters of TLV 13."; - - leaf system-id-count { - type uint8; - description - "Number of system IDs carried in this TLV."; - } - - leaf source-system-id { - type oc-isis-types:system-id; - description - "System ID of the Intermediate System that inserted - this TLV."; - } - - leaf received-system-id { - type oc-isis-types:system-id; - description - "System ID of the Intermediate System from which the - purge was received."; - } - } - } - - container router-capabilities { - when "../state/type = " + - "'oc-isis-lsdb-types:ROUTER_CAPABILITY'" { - description - "Only include the router capability TLV when the TLV is - type 242."; - } - description - "This container defines router capabilities."; - - list capability { - key "instance-number"; - - description - "This list describes IS Router capabilities."; - - reference - "RFC4971: Intermediate System to Intermediate System - (IS-IS) Extensions for Advertising Router Information. - TLV 242."; - - leaf instance-number { - type leafref { - path "../state/instance-number"; - } - description - "Reference to the instance number of the router - capability TLV."; - } - - container state { - description - "State parameters of TLV 242."; - - leaf instance-number { - type uint32; - description - "A unique instance number for the instance of the - router capabilities TLV. The instance number should - be autogenerated by the producer of the data and may - be renumbered if the entire LSP contents are - replaced in subsequent advertisements."; - } - - leaf router-id { - type inet:ipv4-address; - description - "IPv4 router-id."; - } - - leaf-list flags { - type enumeration { - enum FLOOD { - description - "When the S bit is set(1), the IS - IS Router - CAPABILITY TLV MUST be flooded across the entire - routing domain. When the S bit is not set(0), - the TLV MUST NOT be leaked between levels . This - bit MUST NOT be altered during the TLV - leaking."; - } - enum DOWN { - description - "When the IS-IS Router CAPABILITY TLV is leaked - from level - 2 to level-1, the Down bit MUST be - set. Otherwise, this bit MUST be clear. IS - IS - Router capability TLVs with the Down bit set - MUST NOT be leaked from level - 1 to level-2. - This is to prevent TLV looping."; - } - } - description - "Router capability flags."; - } - } - - container subtlvs { - description - "This container describes router capability TLV - sub-TLVs"; - - list subtlv { - key "type"; - description - "List of subTLV types in the LSDB for the specified - TLV"; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to the sub-TLV type"; - } - - container state { - description - "State parameters of IS Router Capabilities"; - - uses isis-lsdb-subtlv-type-state; - } - - container segment-routing-algorithms { - when "../state/type = " + - "'oc-isis-lsdb-types:ROUTER_CAPABILITY_SR_ALGORITHM'" { - description - "Only include segment routing algorithm when the - sub-TLV is type 19."; - } - description - "This container defines SR algorithm sub-TLV 19."; - - reference - "draft-ietf-isis-segment-routing-extensions. - TLV 242, sub-TLV 19"; - - container state { - description - "State parameters of sub-TLV 19 - Segment - Routing Algorithm."; - - leaf-list algorithm { - type enumeration { - enum SPF { - value 0; - description - "Shortest Path First (SPF) algorithm - based on link metric. This is the - well-known shortest path algorithm as - computed by the IS-IS Decision process. - Consistent with the deployed practice - for link-state protocols, algorithm 0 - permits any node to overwrite the SPF - path with a different path based on - local policy."; - } - enum STRICT_SPF { - value 1; - description - "Strict Shortest Path First (SPF) - algorithm based on link metric. The - algorithm is identical to algorithm 0 - but algorithm 1 requires that all nodes - along the path will honor the SPF - routing decision. Local policy MUST NOT - alter the forwarding decision computed - by algorithm 1 at the node claiming to - support algorithm 1."; - } - } - description - "The Segment Routing algorithm that is - described by the TLV."; - } - } - } - - container segment-routing-capability { - when "../state/type = " + - "'oc-isis-lsdb-types:ROUTER_CAPABILITY_SR_CAPABILITY'" { - description - "Only include the SR capability sub-TLV when - the sub-TLV type is 2."; - } - description - "This container defines SR Capability sub-TLV 2."; - - reference - "draft-ietf-isis-segment-routing-extensions. TLV - 242, sub-TLV 2."; - - container state { - description - "State parameters of IS SR Router Capability"; - - leaf-list flags { - type enumeration { - enum IPV4_MPLS { - description - "When set, the router is capable of - processing SR MPLS encapsulated IPv4 - packets on all interfaces."; - } - enum IPV6_MPLS { - description - "When set, the router is capable of - processing SR MPLS encapsulated IPv6 - packets on all interfaces."; - } - enum IPV6_SR { - description - "When set, the router is capable of - processing the IPv6 Segment Routing Header - on all interfaces."; - } - } - description - "Segment Routing Capability Flags."; - } - } - - container srgb-descriptors { - description - "SRGB Descriptors included within the SR - capability sub-TLV"; - - list srgb-descriptor { - key "range"; - description - "Descriptor entry within the SR capabilty - sub-TLV"; - - leaf range { - type leafref { - path "../state/range"; - } - description - "Reference to unique SRGB Descriptor."; - } - - container state { - description - "State parameters of the SR range"; - - leaf range { - type uint32; - description - "Number of SRGB elements. The range - value MUST be greater than 0."; - } - - leaf label { - type oc-mpls-types:mpls-label; - description - "The first value of the SRGB when - expressed as an MPLS label."; - } - } - } - } - } - } - } - uses isis-lsdb-undefined-subtlv; - } - } - - container is-reachability { - when "../state/type = 'oc-isis-lsdb-types:IIS_NEIGHBORS'" { - description - "Include IIS_NEIGHBORS sub-TLV when the TLV type is 2."; - } - description - "This container describes list of ISIS neighbors and - attributes."; - - reference - "ISO 10589, Intermediate System to Intermediate System - Intra- Domain Routeing Exchange Protocol for use in - Conjunction with the Protocol for Providing the - Connectionless-mode Network Service (ISO 8473), - International Standard 10589: 2002, Second Edition, - 2002. TLV 2."; - - container neighbors { - description - "This container describes IS neighbors."; - - list neighbor { - key "system-id"; - description - "IS reachability neighbor attributes."; - - leaf system-id { - type leafref { - path "../state/system-id"; - } - description - "Reference to the system ID of the neighbor."; - } - - uses isis-lsdb-neighbor; - } - } - } - - container ipv4-internal-reachability { - when "../state/type = " + - "'oc-isis-lsdb-types:IPV4_INTERNAL_REACHABILITY'" { - description - "Include IPv4 internal reachability TLV when the TLV - type is specified as 128."; - } - description - "This container defines list of IPv4 internal reachability - information."; - - reference - "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302: - Domain-Wide Prefix Distribution with Two-Level IS-IS. TLV - 128"; - - container prefixes { - description - "This container describes IS prefixes."; - - list prefix { - key "prefix"; - - description - "IPv4 prefixes and internal reachability attributes."; - - leaf prefix { - type leafref { - path "../state/prefix"; - } - description - "Reference to the IPv4 prefix"; - } - - uses ipv4-prefix-attributes-state; - } - } - } - - container ipv4-external-reachability { - when "../state/type = " + - "'oc-isis-lsdb-types:IPV4_EXTERNAL_REACHABILITY'" { - description - "Include IPv4 external reachability when the TLV type - is set to 130."; - } - description - "This container defines list of IPv4 external reachability - information."; - - reference - "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302: - Domain-Wide Prefix Distribution with Two-Level IS-IS. TLV - 130"; - - container prefixes { - description - "This container describes IS neighbors."; - - list prefix { - key "prefix"; - - description - "IPv4 external prefixes and reachability attributes."; - - leaf prefix { - type leafref { - path "../state/prefix"; - } - description - "Reference to the IPv4 prefix."; - } - - uses ipv4-prefix-attributes-state; - } - } - } - - container authentication { - when "../state/type = 'oc-isis-lsdb-types:AUTHENTICATION'" { - description - "Only include the authentication TLV when the TLV is - type 10."; - } - description - "This container defines authentication information of the - node."; - - reference - "ISO 10589 Intermediate System to Intermediate System - Intra- Domain Routeing Exchange Protocol for use in - Conjunction with the Protocol for Providing the - Connectionless-mode Network Service (ISO 8473) - International Standard 10589: 2002, Second Edition, 2002. - TLV 10."; - - container state { - description - "State parameters of TLV 10."; - - leaf crypto-type { - type enumeration { - enum HMAC_MD5 { - description - "HMAC-MD5 Authentication type."; - } - enum CLEARTEXT { - description - "Cleartext Authentication type."; - } - } - description - "Authentication type to be used."; - } - - leaf authentication-key { - type string; - description - "Authentication key to be used."; - } - } - } - - container extended-is-reachability { - when "../state/type = " + - "'oc-isis-lsdb-types:EXTENDED_IS_REACHABILITY'" { - description - "Only included the extended IS reachability TLV when the - TLV is type 22."; - } - - description - "This container defines list of ISIS extended reachability - neighbors."; - - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. TLV - 22."; - - uses isis-lsdb-common-extisreach-neighbors; - } - - container extended-ipv4-reachability { - when "../state/type = " + - "'oc-isis-lsdb-types:EXTENDED_IPV4_REACHABILITY'" { - description - "Only include the extended IPv4 reachability container - when the TLV type is 135."; - } - description - "This container defines list of IPv4 extended reachability - information."; - - reference - "RFC5305: IS-IS Extensions for Traffic Engineering. TLV - 135"; - - container prefixes { - description - "This container describes IS prefixes."; - - list prefix { - key "prefix"; - - description - "This list describes IPv4 extended prefixes and - attributes."; - - leaf prefix { - type leafref { - path "../state/prefix"; - } - description - "Reference to the IPv4 prefix that the TLV describes - the attributes of."; - } - - uses ipv4-prefix-extended-state; - } - } - } - - container ipv6-reachability { - when "../state/type = " + - "'oc-isis-lsdb-types:IPV6_REACHABILITY'" { - description - "Only include the IPv6 reachability container when the - TLV type is 236."; - } - description - "This container defines list of IPv6 reachability - information."; - - reference - "RFC5308: Routing IPv6 with IS-IS. TLV 236"; - - container prefixes { - description - "This container describes IS prefixes."; - - list prefix { - key "prefix"; - - description - "This list defines IPv6 extended prefix attributes."; - - leaf prefix { - type leafref { - path "../state/prefix"; - } - description - "Reference to the IPv6 prefix that the TLV - corresponds to."; - } - - uses ipv6-prefix-extended-state; - } - } - } - - container multi-topology { - when "../state/type = 'oc-isis-lsdb-types:MULTI_TOPOLOGY'" { - description - "Only include the multi-topology container when the TLV - is type 229."; - } - - description - "This container defines the topology supported."; - - reference - "RFC5120: M-ISIS: Multi Topology (MT) Routing in - Intermediate System to Intermediate Systems (IS-ISs). TLV - 229"; - - container topologies { - description - "This container describes IS topologies."; - - list topology { - key "mt-id"; - - description - "This list describes a topology."; - - leaf mt-id { - type leafref { - path "../state/mt-id"; - } - description - "Reference to the multi-topology ID being described - by the list entry."; - } - - container state { - description - "State parameters of IS multi-topology TLV 229."; - - leaf mt-id { - type uint16 { - range "0 .. 4095"; - } - description - "Multi-topology ID."; - } - - leaf attributes { - type enumeration { - enum OVERLOAD { - description - "When set, node is overloaded, still part of - the topology but cannot be used for transit."; - } - enum ATTACHED { - description - "When set, node is attached to another area - using the referred metric and can be used as - default gateway."; - } - } - description - "Attributes of the LSP for the associated - topology."; - } - } - } - } - } - - container isis-neighbor-attribute { - when "../state/type = " + - "'oc-isis-lsdb-types:IS_NEIGHBOR_ATTRIBUTE'" { - description - "Only include the neighbor attribute container when the - TLV is type 23."; - } - description - "This container defines list of ISIS topology neighbors - for extended ISIS LSP (multiple system IDs). "; - - reference - "RFC5311: Simplified Extension of Link State PDU (LSP) - Space for IS-IS. TLV 23. It is identical in format to the - extended IS reachability TLV 22."; - - uses isis-lsdb-common-extisreach-neighbors; - } - - container is-alias-id { - when "../state/type = 'oc-isis-lsdb-types:ISIS_ALIAS_ID'" { - description - "Only include the ISIS alias ID container when the TLV - is type 24."; - } - - description - "This container defines the IS-Alias TLV which allows - extension-capable ISs to recognize the Originating System - of an Extended LSP set. It identifies the Normal system- - id of the Originating System."; - - reference - "RFC5311: Simplified Extension of Link State PDU (LSP) - Space for IS-IS TLV 24."; - - container state { - config false; - description - "State parameters of alias ID."; - - leaf alias-id { - type oc-isis-types:system-id; - description - "List of alias ID(s)."; - } - } - } - - container mt-isn { - when "../state/type = 'oc-isis-lsdb-types:MT_ISN'" { - description - "Only include the MT ISN container when the TLV is type - 222."; - } - description - "This container defines list of ISIS multi-topology - neighbors."; - - reference - "RFC5120: M-ISIS: Multi Topology (MT) Routing in - Intermediate System to Intermediate Systems (IS-ISs). TLV - 222."; - - uses isis-lsdb-mtis-common; - } - - container mt-isis-neighbor-attribute { - when "../state/type = " + - "'oc-isis-lsdb-types:MT_IS_NEIGHBOR_ATTRIBUTE'" { - description - "Only include the MT ISIS neighbor attribute container - when the TLV is type 223."; - } - - description - "This container defines list of ISIS multi-topology - neighbors."; - - reference - "RFC5311: Simplified Extension of Link State PDU (LSP) - Space for IS-IS. TLV 223. It is identical in format to the - MT-ISN TLV 222."; - - uses isis-lsdb-mtis-common; - } - - container mt-ipv4-reachability { - when "../state/type = " + - "'oc-isis-lsdb-types:MT_IPV4_REACHABILITY'" { - description - "Only include the multi-topology IPv4 reachability - container when the TLV is type 235."; - } - description - "This container defines list of IPv4 reachability - Information in multi-topology environment."; - - reference - "RFC5120: M-ISIS: Multi Topology (MT) Routing in - Intermediate System to Intermediate Systems (IS-ISs). TLV - 235."; - - container prefixes { - description - "This container describes IS prefixes."; - - list prefix { - key "mt-id prefix"; - - leaf mt-id { - type leafref { - path "../state/mt-id"; - } - description - "Reference to the topology ID of the topology that - the prefix is within."; - } - - leaf prefix { - type leafref { - path "../state/prefix"; - } - description - "Reference to the prefix to which reachability is - being advertised."; - } - - description - "IPv4 prefixes that are contained within MT - reachability TLV."; - - uses ipv4-mt-prefix-extended-state; - } - } - } - - container mt-ipv6-reachability { - when "../state/type = " + - "'oc-isis-lsdb-types:MT_IPV6_REACHABILITY'" { - description - "Only include the multi-topology IPv6 reachability - container when the TLV is type 237."; - } - description - "This container defines list of IPv6 reachability - information in multi - topology environment."; - - reference - "RFC5120: M-ISIS: Multi Topology (MT) Routing in - Intermediate System to Intermediate Systems (IS-ISs). TLV - 237."; - - container prefixes { - description - "This container describes IS prefixes."; - - list prefix { - key "prefix mt-id"; - description - "List of IPv6 prefixes contained within MT - reachability TLV."; - - leaf prefix { - type leafref { - path "../state/prefix"; - } - description - "Reference to the IPv6 prefix described by the - TLV."; - } - - leaf mt-id { - type leafref { - path "../state/mt-id"; - } - description - "Reference to the multi-topology ID."; - } - - uses ipv6-mt-prefix-extended-state; - } - } - } - } - } - - uses isis-lsdb-undefined-tlv; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-isis-policy.yang b/src/plugins/yang/openconfig/openconfig-isis-policy.yang deleted file mode 100644 index 748b720..0000000 --- a/src/plugins/yang/openconfig/openconfig-isis-policy.yang +++ /dev/null @@ -1,189 +0,0 @@ -module openconfig-isis-policy { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/openconfig-isis-policy"; - - prefix "oc-isis-pol"; - - // import some basic types - import openconfig-routing-policy {prefix rpol; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-isis-types { prefix isis-types; } - - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net "; - - description - "This module contains data definitions for ISIS routing policy. - It augments the base routing-policy module with BGP-specific - options for conditions and actions."; - - oc-ext:openconfig-version "0.4.0"; - - revision "2018-05-14" { - description - "Update LSDB model to correct Extended IS reach TLV - bug. This change is backwards incompatible due to - adding an additional level of hierarchy to support - multiple instances of the TLV."; - reference "0.4.0"; - } - - revision "2017-07-26" { - description - "Update LSDB and fix bugs."; - reference "0.3.2"; - } - - revision "2017-05-15" { - description - "Refactor LSDB."; - reference "0.3.0"; - } - - revision "2017-01-13" { - description - "Remove top-level /isis container"; - reference "0.2.1"; - } - - revision "2016-12-15" { - description - "Add segment routing to IS-IS module"; - reference "0.2.0"; - } - - revision "2016-10-18" { - description - "Initial revision of IS-IS models."; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - // typedef statements - - // grouping statements - - grouping isis-match-conditions { - description - "Criteria used to match IS-IS routes within the policy"; - - container isis-conditions { - description - "Match conditions relating to the IS-IS protocol"; - - container config { - description - "Configuration parameters relating to IS-IS match - conditions"; - - uses isis-match-conditions-config; - } - - container state { - config false; - description - "Operational state parameters relating to IS-IS match - conditions"; - uses isis-match-conditions-config; - } - } - } - - grouping isis-match-conditions-config { - description - "Match conditions for IS-IS"; - - leaf level-eq { - type isis-types:level-number; - description - "Match the level that the IS-IS prefix is within. This can - be used in the case that import or export policies refer - to an IS-IS instance that has multiple levels configured - within it"; - } - } - - grouping isis-actions { - description - "Actions supplied by the IS-IS protocol to be set on a - route within the policy"; - - container isis-actions { - description - "Actions that can be performed by IS-IS within a policy"; - - container config { - description - "Configuration parameters relating to IS-IS actions"; - - uses isis-actions-config; - } - - container state { - config false; - description - "Operational state associated with IS-IS actions"; - - uses isis-actions-config; - } - } - } - - grouping isis-actions-config { - description - "Actions for IS-IS"; - - leaf set-level { - type isis-types:level-number; - description - "Set the level that a prefix is to be imported into."; - } - - leaf set-metric-type { - type isis-types:level-number; - description - "Set the type of metric that is to be specified when the - set metric leaf is specified"; - } - - leaf set-metric { - type isis-types:wide-metric; - description - "Set the metric of the IS-IS prefix"; - } - } - - // augment statements - augment "/rpol:routing-policy/rpol:policy-definitions/" + - "rpol:policy-definition/rpol:statements/rpol:statement/" + - "rpol:actions" { - description "This augments igp-actions with ISIS conditions"; - uses isis-actions; - - } - - augment "/rpol:routing-policy/rpol:policy-definitions/" + - "rpol:policy-definition/rpol:statements/rpol:statement/" + - "rpol:conditions" { - description "This augments igp-conditions with ISIS conditions"; - uses isis-match-conditions; - } - - // rpc statements - - // notification statements -} diff --git a/src/plugins/yang/openconfig/openconfig-isis-routing.yang b/src/plugins/yang/openconfig/openconfig-isis-routing.yang deleted file mode 100644 index 84e7a7a..0000000 --- a/src/plugins/yang/openconfig/openconfig-isis-routing.yang +++ /dev/null @@ -1,384 +0,0 @@ -submodule openconfig-isis-routing { - - belongs-to openconfig-isis { - prefix "oc-isis"; - } - - // import some basic types - import openconfig-isis-types { prefix oc-isis-types; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-mpls-types { prefix oc-mplst; } - import openconfig-segment-routing { prefix oc-sr; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module describes YANG model for ISIS Routing"; - - oc-ext:openconfig-version "0.4.0"; - - revision "2018-05-14" { - description - "Update LSDB model to correct Extended IS reach TLV - bug. This change is backwards incompatible due to - adding an additional level of hierarchy to support - multiple instances of the TLV."; - reference "0.4.0"; - } - - revision "2017-07-26" { - description - "Update LSDB and fix bugs."; - reference "0.3.2"; - } - - revision "2017-05-15" { - description - "Refactor LSDB."; - reference "0.3.0"; - } - - revision "2017-01-13" { - description - "Remove top-level /isis container"; - reference "0.2.1"; - } - - revision "2016-12-15" { - description - "Add segment routing to IS-IS module"; - reference "0.2.0"; - } - - revision "2016-10-18" { - description - "Initial revision of IS-IS models."; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - // typedef statements - - // grouping statements - - grouping rt-admin-config { - description - "Re-usable grouping to enable or disable a particular IS-IS feature."; - - leaf enabled { - type boolean; - description - "When set to true, the functionality within which this leaf is - defined is enabled, when set to false it is explicitly disabled."; - } - } - - grouping isis-afi-safi-config { - description - "This grouping defines Address-Family configuration parameters"; - - leaf afi-name { - type identityref { - base oc-isis-types:AFI_TYPE; - } - description - "Address-family type."; - } - - leaf safi-name { - type identityref { - base oc-isis-types:SAFI_TYPE; - } - description - "Subsequent address-family type."; - } - } - - grouping isis-shortcuts-afi-config { - description - "This grouping defines ISIS Shortcuts configuration parameters"; - - leaf afi-name { - type identityref { - base oc-isis-types:AFI_TYPE; - } - description "Address-family type."; - } - - leaf-list nh-type { - type identityref { - base oc-mplst:PATH_SETUP_PROTOCOL; - } - description "Tunnel NH Type(RSVP,SR). When present it implies - that nh-type shortcut is enabled for a specified AFI."; - } - } - - grouping isis-shortcuts-config { - description - "This grouping defines ISIS Shortcuts consfiguration parameters"; - - container config { - description "This container defines ISIS shortcuts configuration."; - uses rt-admin-config; - } - - container state { - config false; - description "This container defines state for ISIS shortcuts."; - uses rt-admin-config; - } - } - - grouping isis-mt-config { - description - "This grouping defines ISIS multi-topology configuration parameters"; - - leaf afi-name { - type identityref { - base oc-isis-types:AFI_TYPE; - } - description - "Address-family type."; - } - leaf safi-name { - type identityref { - base oc-isis-types:SAFI_TYPE; - } - description - "Subsequent address-family type."; - } - //prefer single topology - } - - - - // *********** STRUCTURE GROUPINGS ********************** - - grouping isis-metric-config { - description - "This grouping defines ISIS metric configuration"; - - leaf metric { - type uint32; - default 10; - description "ISIS metric value(default=10)."; - } - } - - grouping isis-afi-safi-list { - description - "This grouping defines address-family configuration and state - information"; - - list af { - key "afi-name safi-name"; - - description - "Address-family/Subsequent Address-family list."; - - leaf afi-name { - type leafref { - path "../config/afi-name"; - } - description - "Reference to address-family type"; - } - - leaf safi-name { - type leafref { - path "../config/safi-name"; - } - description - "Reference to subsequent address-family type"; - } - - container config { - description - "This container defines AFI-SAFI configuration parameters"; - - uses isis-afi-safi-config; - uses isis-metric-config; - uses rt-admin-config; - } - - container state { - config false; - description - "This container defines AFI-SAFI State information"; - - uses isis-afi-safi-config; - uses isis-metric-config; - uses rt-admin-config; - } - - uses isis-mt-list; - } - } - - grouping isis-if-afi-safi-list { - description - "This grouping defines address-family configuration and state - information"; - - list af { - key "afi-name safi-name"; - - description - "Address-family/Subsequent Address-family list."; - - leaf afi-name { - type leafref { - path "../config/afi-name"; - } - description - "Reference to address-family type"; - } - - leaf safi-name { - type leafref { - path "../config/safi-name"; - } - description - "Reference to subsequent address-family type"; - } - - container config { - description - "This container defines AFI-SAFI configuration parameters. Single - topology is the default setting."; - uses isis-afi-safi-config; - uses isis-metric-config; - uses rt-admin-config; - } - - container state { - config false; - description - "This container defines AFI-SAFI State information"; - uses isis-afi-safi-config; - uses isis-metric-config; - uses rt-admin-config; - } - - uses oc-sr:sr-igp-interface-top; - } - } - - grouping isis-if-global-afi-safi-list { - description - "This grouping defines address-family configuration and state - information"; - - list af { - key "afi-name safi-name"; - - description - "Address-family/Subsequent Address-family list."; - - leaf afi-name { - type leafref { - path "../config/afi-name"; - } - description - "Reference to address-family type"; - } - - leaf safi-name { - type leafref { - path "../config/safi-name"; - } - description - "Reference to subsequent address-family type"; - } - - container config { - description - "This container defines AFI-SAFI configuration parameters. Single - topology is the default setting."; - uses isis-afi-safi-config; - uses rt-admin-config; - } - - container state { - config false; - description - "This container defines AFI-SAFI State information"; - uses isis-afi-safi-config; - uses rt-admin-config; - } - } - } - - grouping isis-shortcuts-afi-list { - description - "This grouping defines ISIS Shorcuts configuration and - state information"; - - list afi { - key "afi-name"; - - description - "Address-family list."; - - leaf afi-name { - type leafref { - path "../config/afi-name"; - } - description - "Reference to address-family type."; - } - - container config { - description - "This container defines ISIS Shortcuts configuration parameters"; - uses isis-shortcuts-afi-config; - } - - container state { - config false; - description - "This container defines ISIS Shortcuts state information"; - uses isis-shortcuts-afi-config; - } - } - } - - grouping isis-mt-list { - description - "This grouping defines multi-topology address-family configuration and - state information. MT0 - IPv4 Unicast, MT2 - IPv6 Unicast, MT3 - - IPv4 Multicast, MT4 - IPv6 Multicast"; - - container multi-topology { - description - "This container defines multi-topology address-family configuration - and state information. ISIS TLV 235, 237."; - - container config { - description - "This container defines AFI-SAFI multi-topology configuration - parameters"; - uses isis-mt-config; - } - - container state { - config false; - description - "This container defines AFI-SAFI multi-topology state information"; - uses isis-mt-config; - uses rt-admin-config; - } - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-isis-types.yang b/src/plugins/yang/openconfig/openconfig-isis-types.yang deleted file mode 100644 index cdfab1f..0000000 --- a/src/plugins/yang/openconfig/openconfig-isis-types.yang +++ /dev/null @@ -1,339 +0,0 @@ -module openconfig-isis-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/isis-types"; - - prefix "oc-isis-types"; - - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module contains general data definitions for use in ISIS YANG - model."; - - oc-ext:openconfig-version "0.4.0"; - - revision "2018-05-14" { - description - "Update LSDB model to correct Extended IS reach TLV - bug. This change is backwards incompatible due to - adding an additional level of hierarchy to support - multiple instances of the TLV."; - reference "0.4.0"; - } - - revision "2017-07-26" { - description - "Update LSDB and fix bugs."; - reference "0.3.2"; - } - - revision "2017-05-15" { - description - "Refactor LSDB."; - reference "0.3.0"; - } - - revision "2017-01-13" { - description - "Remove top-level /isis container"; - reference "0.2.1"; - } - - revision "2016-12-15" { - description - "Add segment routing to IS-IS module"; - reference "0.2.0"; - } - - revision "2016-10-18" { - description - "Initial revision of IS-IS models."; - reference "0.1.0"; - } - - // identity statements - identity OVERLOAD_RESET_TRIGGER_TYPE { - description - "Base identify type for triggers that reset Overload Bit"; - } - - identity WAIT_FOR_BGP { - base OVERLOAD_RESET_TRIGGER_TYPE; - description - "Base identity type for resetting Overload Bit when BGP has converged. "; - } - - identity WAIT_FOR_SYSTEM { - base OVERLOAD_RESET_TRIGGER_TYPE; - description - "Base identity type for resetting Overload Bit when system resources have - been restored. "; - } - - identity MT_TYPE { - description - "Base identify type for multi-topology"; - } - - identity SAFI_TYPE { - description - "Base identify type for SAFI"; - } - - identity AFI_TYPE { - description - "Base identify type for AFI"; - } - - identity AFI_SAFI_TYPE { - description - "Base identify type for AFI/SAFI"; - } - - identity IPV4_UNICAST { - base AFI_SAFI_TYPE; - description - "Base identify type for IPv4 Unicast address family"; - } - - identity IPV6_MULTICAST { - base AFI_SAFI_TYPE; - description - "Base identify type for IPv6 multicast address family"; - } - - identity IPV4_MULTICAST { - base AFI_SAFI_TYPE; - description - "Base identify type for IPv4 multicast address family"; - } - - identity IPV6_UNICAST { - base AFI_SAFI_TYPE; - description - "Base identify type for IPv6 unicast address family"; - } - - identity UNICAST { - base SAFI_TYPE; - description - "Base identify type for IPv4 Unicast address family"; - } - - identity MULTICAST { - base SAFI_TYPE; - description - "Base identify type for IPv6 multicast address family"; - } - - identity IPV4 { - base AFI_TYPE; - description - "Base identify type for IPv4 address family"; - } - - identity IPV6 { - base AFI_TYPE; - description - "Base identify type for IPv6 address family"; - } - - // typedef statements - typedef level-type { - type enumeration { - enum LEVEL_1 { - description "This enum describes ISIS level 1"; - } - enum LEVEL_2 { - description "This enum describes ISIS level 2"; - } - enum LEVEL_1_2 { - description "This enum describes ISIS level 1-2"; - } - } - description - "This type defines ISIS level types"; - } - - typedef level-number { - type uint8 { - range "1..2"; - } - description - "This type defines ISIS level."; - } - - typedef adaptive-timer-type { - type enumeration { - enum LINEAR { - description "This enum describes linear algorithm timer"; - } - enum EXPONENTIAL { - description "This enum describes exponential algorithm timer"; - } - } - description - "This type defines ISIS adaptive timer types"; - } - - typedef hello-padding-type { - type enumeration { - enum STRICT { - description "This enum describes strict padding"; - } - enum LOOSE { - description "This enum describes loose padding"; - } - enum ADAPTIVE { - description "This enum describes adaptive padding"; - } - enum DISABLE { - description "This enum disables padding"; - } - } - description - "This type defines ISIS hello padding type"; - } - - typedef circuit-type { - type enumeration { - enum POINT_TO_POINT { - description "This enum describes a point-to-point interface"; - } - enum BROADCAST { - description "This enum describes a broadcast interface"; - } - } - description - "This type defines ISIS interface types "; - } - - typedef metric-type { - type enumeration { - enum INTERNAL { - description "This enum describes internal route type"; - } - enum EXTERNAL { - description "This enum describes external route type"; - } - } - description - "This type defines ISIS metric type"; - } - - typedef wide-metric { - type uint32 { - range "1..16777215"; - } - description - "This type defines ISIS wide metric."; - } - - typedef narrow-metric { - type uint8 { - range "1..63"; - } - description - "This type defines ISIS narrow metric."; - } - - typedef metric-style { - type enumeration { - enum NARROW_METRIC { - description - "This enum describes narrow metric style"; - reference "RFC1195"; - } - enum WIDE_METRIC { - description - "This enum describes wide metric style"; - reference "RFC5305"; - } - } - description - "This type defines ISIS metric styles"; - } - - typedef isis-interface-adj-state { - type enumeration { - enum UP { - description - "This state describes that adjacency is established."; - } - enum DOWN { - description - "This state describes that adjacency is NOT established."; - } - enum INIT { - description - "This state describes that adjacency is establishing."; - } - enum FAILED { - description - "This state describes that adjacency is failed."; - } - } - description - "This type defines the state of the interface."; - } - - typedef net { - type string { - pattern '^[a-fA-F0-9]{2}(\.[a-fA-F0-9]{4}){3,9}\.[a-fA-F0-9]{2}$'; - } - description - "This type defines OSI NET address. A NET should should be in - the form xx.yyyy.yyyy.yyyy.00 with up to 9 sets of yyyy."; - } - - typedef area-address { - type string { - pattern '^[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}$'; - } - description - "This type defines the ISIS area address."; - } - - typedef system-id { - type string { - pattern '^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$'; - } - description - "This type defines ISIS system id using pattern, system id looks - like : 0143.0438.AeF0"; - } - - typedef extended-circuit-id { - type uint32; - description - "This type defines interface circuit ID."; - } - - typedef lsp-id { - type string { - pattern - '^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' - + '{4}\.[0-9][0-9]-[0-9][0-9]$'; - } - description - "This type defines ISIS LSP ID. ISIS LSP ID type should be in - the form of xxxx.xxxx.xxxx.xx-xx"; - } - typedef snpa { - type string { - length "0 .. 20"; - } - description - "This type defines Subnetwork Point of Attachment format."; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-isis.yang b/src/plugins/yang/openconfig/openconfig-isis.yang deleted file mode 100644 index 0a0db6b..0000000 --- a/src/plugins/yang/openconfig/openconfig-isis.yang +++ /dev/null @@ -1,2059 +0,0 @@ -module openconfig-isis { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/openconfig-isis"; - - prefix "oc-isis"; - - // import some basic types - import ietf-inet-types { prefix "inet"; } - import ietf-yang-types { prefix "yang"; } - import openconfig-types { prefix "oc-types"; } - import openconfig-isis-types { prefix "oc-isis-types"; } - import openconfig-routing-policy { prefix "oc-rpol"; } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-interfaces { prefix "oc-if"; } - import openconfig-segment-routing { prefix "oc-sr"; } - // TODO(robjs): Import authentication and keychain following merge of these - // modules. - //import openconfig-authentication-types { prefix "oc-auth-types"; } - //import openconfig-keychain { prefix "oc-keychain"; } - - // Include submodules: - // IS-IS LSP is the LSDB for IS-IS. - include openconfig-isis-lsp; - // IS-IS RT is routing-related features for IS-IS - include openconfig-isis-routing; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net "; - - description - "This module describes a YANG model for ISIS protocol configuration. - It is a limited subset of all of the configuration parameters - available in the variety of vendor implementations, hence it is - expected that it would be augmented with vendor - specific configuration - data as needed. Additional modules or submodules to handle other - aspects of ISIS configuration, including policy, routing, types, - LSDB and additional address families are also expected. This model - supports the following ISIS configuration level hierarchy: - - ISIS - +-> { global ISIS configuration} - +-> levels +-> { level config} - +-> { system-level-counters } - +-> { level link-state-database} - +-> interface +-> { interface config } - +-> { circuit-counters } - +-> { levels config } - +-> { level adjacencies }"; - - oc-ext:openconfig-version "0.4.1"; - - revision "2018-06-05" { - description - "Fix bugs in when statements."; - reference "0.4.1"; - } - - revision "2018-05-14" { - description - "Update LSDB model to correct Extended IS reach TLV - bug. This change is backwards incompatible due to - adding an additional level of hierarchy to support - multiple instances of the TLV."; - reference "0.4.0"; - } - - revision "2017-07-26" { - description - "Update LSDB and fix bugs."; - reference "0.3.2"; - } - - revision "2017-05-15" { - description - "Refactor LSDB."; - reference "0.3.0"; - } - - revision "2017-01-13" { - description - "Remove top-level /isis container"; - reference "0.2.1"; - } - - revision "2016-12-15" { - description - "Add segment routing to IS-IS module"; - reference "0.2.0"; - } - - revision "2016-10-18" { - description - "Initial revision of IS-IS models."; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - // typedef statements - - // grouping statements - - grouping isis-global-config { - description - "This grouping defines lobal configuration options for ISIS router."; - - // multi-instance - leaf instance { - type string; - default 0; - description - "ISIS Instance."; - } - - leaf-list net { - type oc-isis-types:net; - description - "ISIS network entity title (NET). The first 8 bits are usually - 49 (private AFI), next 16 bits represent area, next 48 bits represent - system id and final 8 bits are set to 0."; - reference - "International Organization for Standardization, Information - technology - Open Systems Interconnection-Network service - Definition - ISO/ IEC 8348:2002."; - } - - leaf maximum-area-addresses { - type uint8; - default 3; - description - "Maximum areas supported."; - } - - leaf level-capability { - type oc-isis-types:level-type; - default "LEVEL_1_2"; - description - "ISIS level capability(level-1, level-2,vlevel-1-2)."; - } - - leaf max-ecmp-paths { - type uint8; - description - "ISIS max-paths count."; - } - - leaf poi-tlv { - type boolean; - default false; - description - "ISIS purge TLV. When set to true, a TLV is added to purges to record - the system ID of the IS generating the purge."; - reference "RFC6232: Purge Originator Identification TLV for IS-IS. TLV 13."; - } - - leaf iid-tlv { - type boolean; - default false; - description - "ISIS Instance Identifier TLV. When set to trues, the IID-TLV identifies - the unique instance as well as the topology/topologies to which the - PDU applies."; - reference "RFC6822: IS-IS Multi-Instance. TLV 7"; - } - - leaf fast-flooding { - type boolean; - default true; - description - "When set to true, IS will always flood the LSP that triggered an SPF - before the router actually runs the SPF computation."; - } - } - - grouping admin-config { - description - "Re-usable grouping to enable or disable a particular IS-IS feature."; - - leaf enabled { - type boolean; - default false; - description - "When set to true, the functionality within which this leaf is - defined is enabled, when set to false it is explicitly disabled."; - } - } - - grouping isis-bfd-config { - description - "This grouping defines Bidirectionl-Forwarding-Detection - configuration."; - - //There is also BFD state under adjacency - leaf bfd-tlv { - type boolean; - description - "When set to true, BFD TLV is used. This enables support for the IS-IS - BFD TLV options, which specify that a BFD session must be established - before an IS-IS adjacency can transition to the established state. - This option should be enabled on all IS-IS neighbors on a shared - interface."; - reference "RFC6213. TLV 148"; - } - reference "RFC5880: Bidirectional Forwarding Detection (BFD)."; - } - - grouping isis-authentication-check-config { - description - "This grouping defines ISIS authentication check."; - - leaf authentication-check { - type boolean; - default true; - description - "When set to true, reject all ISIS protocol PDUs that either have a mismatch - in authentication-type or authentication-key."; - } - } - - grouping isis-metric-style-config { - description - "This grouping defines ISIS metric style."; - - leaf metric-style { - type oc-isis-types:metric-style; - description - "ISIS metric style types(narrow, wide)."; - } - } - - grouping authentication-key-config { - description - "This grouping defines authentication key configuration."; - - leaf auth-password { - type oc-types:routing-password; - description - "Authentication key string."; - } - } - - grouping keychain-base-group { - description - "This grouping defines keychain configuration."; - - container keychain { - description - "This container defines keychain parameters."; - - // TODO(robjs): Import keychain parameters following merge of the auth - // models. - //uses oc-keychain:keychain-common-base; - //uses oc-keychain:tolerance-base; - //uses oc-keychain:keychain-key-base; - } - } - - grouping isis-authentication-config { - description - "This grouping defines ISIS authentication configuration."; - - // TODO(robjs): Add authentication following merge of auth modules. - //leaf auth-type { - // type oc-auth-types:auth-type; - // description - // "ISIS authentication type (key, key-chain)."; - //} - - leaf csnp-authentication { - type boolean; - default false; - description - "Enable or disable for IS-IS CSNPs."; - } - - leaf psnp-authentication { - type boolean; - default false; - description - "Enable or disable authentication for IS-IS PSNPs."; - } - - leaf lsp-authentication { - type boolean; - default false; - description - "Enable or disable authentication for IS-IS LSPs."; - } - } - - grouping isis-authentication-group { - description - "This grouping defines ISIS authentication."; - - container config { - description - "This container defines ISIS authentication configuration."; - - uses isis-authentication-config; - } - - container state { - config false; - description - "This container defines ISIS authentication state."; - - uses isis-authentication-config; - } - - container key { - description - "This container defines ISIS authentication key"; - container config { - description - "This container defines ISIS authentication key configuration."; - - uses authentication-key-group-config { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY'"; - } - } - - container state { - config false; - description - "This container defines ISIS authentication key state."; - - uses authentication-key-group-config { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY'"; - } - } - } - - uses keychain-base-group { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY_CHAIN'"; - } - } - - grouping isis-hello-authentication-config { - description - "Configuration options for IS-IS hello authentication."; - - leaf hello-authentication { - type boolean; - default false; - description - "Enabled or disable ISIS Hello authentication."; - } - - // TODO(robjs): Add hello-auth-type following merge of auth models. - //leaf hello-auth-type { - // type oc-auth-types:auth-type; - // description - // "ISIS authentication type (key, key-chain)."; - //} - } - - grouping isis-hello-authentication-group { - description - "This grouping defines ISIS hello-authentication."; - - container config { - description - "This container defines ISIS authentication configuration."; - - uses isis-hello-authentication-config; - } - - container state { - config false; - description - "This container defines ISIS authentication state."; - - uses isis-hello-authentication-config; - } - - container key { - description - "This container defines ISIS authentication key"; - - container config { - description - "This container defines ISIS authentication key configuration."; - - uses authentication-key-group-config { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY'"; - } - } - - container state { - config false; - description - "This container defines ISIS authentication key state."; - - uses authentication-key-group-config { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY'"; - } - } - } - - uses keychain-base-group { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY_CHAIN'"; - } - } - - grouping isis-ldp-igp-config { - description - "This grouping defines ISIS/LDP Synchronization configuration."; - - leaf enabled { - type boolean; - default true; - description - "When set to true, rely on IGP/LDP synchronization. IGP cost for - link is maintained at max until LDP adjacencies are established "; - reference "RFC5443: LDP IGP Synchronization."; - } - - leaf post-session-up-delay { - type uint16; - units seconds; - description - "Specifies a delay, expressed in units of seconds, - between the LDP session to the IGP neighbor being established, and - it being considered synchronized by the IGP."; - } - } - - grouping isis-te-config { - description - "This grouping defines ISIS Traffic Engineering configuration."; - - leaf ipv4-router-id { - type inet:ipv4-address-no-zone; - description - "IPv4 MPLS Traffic Engineering Router-ID."; - } - - leaf ipv6-router-id { - type inet:ipv6-address-no-zone; - description - "IPv6 MPLS Traffic Engineering Router-ID."; - } - } - - grouping isis-reference-bandwidth-config { - description - "This grouping defines ISIS Reference Bandwidth Configuration."; - - leaf reference-bandwidth { - type uint32; - description - "ISIS Reference Bandwidth value"; - } - } - - grouping isis-overload-bit-set-config { - description - "This grouping defines ISIS Overload Bit."; - - leaf set-bit { - type boolean; - default false; - description - "When set to true, IS-IS overload bit is set."; - } - - leaf set-bit-on-boot { - type boolean; - default false; - description - "When set to true, the IS-IS overload bit is set on system boot."; - } - - leaf advertise-high-metric { - type boolean; - default false; - description - "When set to true, the local IS advertises links with the highest - available metric regardless of their configured metric. The metric - value is based on the metric style - if wide metrics are utilised - the metric is advertised as 16777214, otherwise they are advertised - with a value of 63."; - } - } - - grouping isis-overload-bit-reset-config { - description - "This grouping defines ISIS Overload Bit Reset Triggers"; - - leaf reset-trigger { - type identityref { - base oc-isis-types:OVERLOAD_RESET_TRIGGER_TYPE; - } - description - "In the case that the system sets the overload bit on start, the - system should reset the bit (i.e., clear the overload bit) upon - the specified trigger."; - } - - leaf delay { - type uint16; - units seconds; - description - "If a reset trigger is specified, the system should delay resetting - the overload bit for the specified number of seconds after the - trigger occurs."; - } - } - - grouping isis-attached-bit-config { - description - "This grouping defines ISIS Attached Bit"; - - leaf ignore-bit { - type boolean; - default false; - description - "When set to true, if the attached bit is set on an incoming Level 1 - IS-IS, the local system ignores it. In this case the local system - does not set a default route to the L1L2 router advertising the PDU - with the attached bit set."; - } - - leaf suppress-bit { - type boolean; - default false; - description - "When set to true, if the local IS acts as a L1L2 router, then the - attached bit is not advertised in locally generated PDUs."; - } - } - - grouping overload-bit-group { - description - "This grouping defines ISIS Overload Bit."; - - container config { - description - "This container defines ISIS Overload Bit configuration."; - - uses isis-overload-bit-set-config; - } - - container state { - config false; - description - "This container defines state for ISIS Overload Bit."; - - uses isis-overload-bit-set-config; - } - - container reset-triggers { - description - "This container defines state for ISIS Overload Bit reset triggers"; - - list reset-trigger { - key "reset-trigger"; - - description - "This list describes ISIS Overload reset trigger reasons."; - - leaf reset-trigger { - type leafref { - path "../config/reset-trigger"; - } - description - "Reference to the reset trigger reason"; - } - - container config { - description - "This container defines ISIS Overload Bit reset trigger - configuration."; - - uses isis-overload-bit-reset-config; - } - - container state { - config false; - description - "This container defines state for ISIS Overload Bit reset - triggers."; - - uses isis-overload-bit-reset-config; - } - } - } - } - - - grouping isis-base-level-config { - description - "This grouping defines ISIS Level configuration."; - - leaf level-number { - type oc-isis-types:level-number; - description - "ISIS level number (level-1, level-2)."; - } - } - - grouping isis-interface-level-config { - description - "This grouping defines ISIS Interface Level configuration."; - - leaf level-number { - type oc-isis-types:level-number; - description - "ISIS level number(level-1, level-2)."; - } - - leaf passive { - type boolean; - default false; - description - "ISIS passive interface admin enable/disable function."; - } - - leaf priority { - type uint8 { - range "0 .. 127"; - } - description - "ISIS neighbor priority(LAN hello PDU only)."; - } - } - - grouping isis-hello-timers-config { - description - "This grouping defines ISIS hello timers configuration."; - - leaf hello-interval { - type uint32; - description - "ISIS hello-interval value."; - } - - leaf hello-multiplier { - type uint8; - description - "ISIS hello-multiplier value."; - } - } - - grouping isis-interface-config { - description - "This grouping defines ISIS interface configuration."; - - leaf interface-id { - type oc-if:interface-id; - description - "Interface for which ISIS configuration is to be applied."; - } - - leaf passive { - type boolean; - default false; - description - "When set to true, the referenced interface is a passive interface - such that it is not eligible to establish adjacencies with other - systems, but is advertised into the IS-IS topology."; - } - - leaf hello-padding { - type oc-isis-types:hello-padding-type; - description - "This leaf controls padding type for IS-IS Hello PDUs."; - } - - leaf circuit-type { - type oc-isis-types:circuit-type; - description - "ISIS circuit type (p2p, broadcast)."; - } - } - - grouping isis-adaptive-timers-state { - description - "This grouping defines ISIS adaptive timers state"; - - leaf adaptive-timer { - type oc-isis-types:adaptive-timer-type; - description - "ISIS adaptive timer types (linear, exponential)."; - } - } - - grouping isis-lsp-generation-timers-config { - description - "This grouping defines ISIS LSP Generation timers configuration"; - - leaf lsp-max-wait-interval { - type uint64; - units milliseconds; - description - "Time interval in milliseconds that specifies max interval between - two consecutive occurrences of an LSP being generated."; - } - - leaf lsp-first-wait-interval { - type uint64; - units milliseconds; - description - "Time interval in milliseconds that specifies the first LSP generation - delay."; - } - - leaf lsp-second-wait-interval { - type uint64; - units milliseconds; - description - "Time interval in milliseconds that specifies the millisecond LSP - generation delay."; - } - } - - grouping isis-lsp-timers-config { - description - "This grouping defines ISIS LSP timers configuration"; - - leaf lsp-lifetime-interval { - type uint16; - units seconds; - default 1200; - description - "Time interval in seconds that specifies how long an LSP remains in - LSDB without being refreshed."; - } - - leaf lsp-refresh-interval { - type uint16; - units seconds; - description - "Time interval in seconds that specifies how often route topology - that a device originates is transmitted in LSPs."; - } - } - - grouping isis-spf-timers-config { - description - "This grouping defines ISIS SPF timers configuration."; - - leaf spf-hold-interval { - type uint64; - units milliseconds; - default 5000; - description - "SPF Hold Down time interval in milliseconds."; - } - - leaf spf-first-interval { - type uint64; - units milliseconds; - description - "Time interval in milliseconds between the - detection of topology change and when the SPF algorithm runs."; - } - leaf spf-second-interval { - type uint64; - units milliseconds; - description - "Time interval in milliseconds between the first and second - SPF calculation."; - } - } - - grouping isis-interface-timers-config { - description - "This grouping defines ISIS interface timers configuration."; - - leaf csnp-interval { - type uint16; - units seconds; - description - "The interval, specified in seconds, at which periodic CSNP packets - should be transmitted by the local IS."; - } - - leaf lsp-pacing-interval { - type uint64; - units milliseconds; - description - "The interval interval in milliseconds between the - detection of topology change and when the SPF algorithm runs."; - } - } - - grouping isis-transport-config { - description - "This grouping defines configuration parameters relating to the - transport protocol used by the ISIS."; - - leaf lsp-mtu-size { - type uint16; - description - "The maximum size in bytes of an IS-IS Link state PDU."; - } - } - - grouping isis-graceful-restart-config { - description - "This grouping defines ISIS graceful restart configuration."; - - leaf helper-only { - type boolean; - description - "Enable or disable the IS-IS graceful restart helper function. When - this leaf is set, the local system does not utilise the IS-IS - graceful restart procedures during its own restart, but supports - retaining forwarding information during a remote speaker's restart."; - } - reference "RFC 5306: Restart Signaling for IS-IS."; - } - - // configuration context containers - grouping inter-level-propagation-policies-structural { - description - "Propagate prefixes between IS-IS levels."; - - container inter-level-propagation-policies { - description - "Policies to propagate prefixes between IS-IS levels."; - - container level1-to-level2 { - description - "Policies relating to prefixes to be propagated from - Level 1 to Level 2."; - - container config { - description - "Configuration parameters relating to the propagation - of prefixes from IS-IS Level 1 to Level 2."; - - uses inter-level-propagation-policy-config; - } - - container state { - config false; - description - "Operational state parameters relating to the - propagation of prefixes from IS-IS Level 1 to Level 2."; - - uses inter-level-propagation-policy-config; - } - - } - - container level2-to-level1 { - description - "Policies relating to prefixes to be propagated from - Level2 to Level 1."; - - container config { - description - "Configuration parameters relating to the propagation - of prefixes from IS-IS Level 2 to Level 1."; - - uses inter-level-propagation-policy-config; - } - - container state { - config false; - description - "Operational state parameters relating to the propagation - of prefixes from IS-IS Level 2 to Level 1."; - - uses inter-level-propagation-policy-config; - } - } - } - } - - grouping inter-level-propagation-policy-config { - description - "Policy governing the propagation of prefixes between levels."; - - uses oc-rpol:apply-policy-import-config; - } - - grouping authentication-key-group-config { - description - "This grouping defines ISIS authentication key configuration."; - - uses authentication-key-config; - - // TODO(robjs): Add crypto-algorithm after merge of authentication modules. - //leaf crypto-algorithm { - // type identityref { - // base oc-auth-types:CRYPTO_TYPE; - // } - // description - // "Authentication key cryptographic algorithm to be used for key encryption."; - //} - } - - grouping isis-global-base { - description - "This grouping describes ISIS Global router."; - - container config { - description - "This container defines ISIS global configuration router."; - - uses isis-authentication-check-config; - uses isis-global-config; - } - - container state { - config false; - description - "This container defines state for ISIS global router."; - - uses isis-authentication-check-config; - uses isis-global-config; - } - - container lsp-bit { - description - "This container defines ISIS LSP Operational Bits."; - - container overload-bit { - description - "This container defines Overload Bit configuration."; - uses overload-bit-group; - } - - container attached-bit { - description - "This container defines Attached Bit."; - - container config { - description - "This container defines Attached Bit configuration."; - - uses isis-attached-bit-config; - } - - container state { - config false; - description - "This container defines state for Link State PDU Bit."; - - uses isis-attached-bit-config; - } - } - } - - container reference-bandwidth { - description - "This container defines ISIS Reference Bandwidth."; - - container config { - description - "This container defines Reference Bandwidth configuration"; - uses isis-reference-bandwidth-config; - } - - container state { - config false; - description - "This container defines state for Reference Bandwidth."; - - uses isis-reference-bandwidth-config; - } - } - - container nsr { - description - "This container defines ISIS Non-Stop Routing."; - - container config { - description - "This container defines Non-Stop-Routing configuration."; - - uses admin-config; - } - - container state { - config false; - description - "This container defines state for Non-Stop-Routing"; - - uses admin-config; - } - } - - container graceful-restart { - description - "This container defines ISIS Graceful Restart."; - - container config { - description - "This container defines ISIS graceful-restart configuration."; - - uses admin-config; - uses isis-graceful-restart-config; - } - - container state { - config false; - description - "This container defines state information for ISIS graceful-restart."; - - uses admin-config; - uses isis-graceful-restart-config; - } - } - - container timers { - description - "This container defines ISIS timers."; - - container config { - description - "This container defines ISIS global timers configuration."; - - uses isis-lsp-timers-config; - } - - container state { - config false; - description - "This container defines state information for ISIS global timers."; - - uses isis-lsp-timers-config; - } - - container spf { - description - "This container defines ISIS SPF timer settings."; - - container config { - description - "This container defines ISIS SPF timers configuration."; - - uses isis-spf-timers-config; - } - - container state { - config false; - description - "This container defines state information for ISIS SPF timers."; - - uses isis-spf-timers-config; - uses isis-adaptive-timers-state; - } - } - - container lsp-generation { - description - "This container defines ISIS LSP Generation."; - - container config { - description - "This container defines ISIS LSP Generation timers - configuration."; - - uses isis-lsp-generation-timers-config; - } - - container state { - config false; - description - "This container defines state information for ISIS LSP Generation - timers."; - - uses isis-lsp-generation-timers-config; - uses isis-adaptive-timers-state; - } - } - } - - container transport { - description - "This container defines ISIS transport."; - - container config { - description - "This container defines ISIS transport related configuration."; - - uses isis-transport-config; - } - - container state { - config false; - description - "This container defines state information for ISIS transport - parameters."; - - uses isis-transport-config; - } - } - - container mpls { - description - "Configuration and operational state relating to MPLS-related - features in IS-IS"; - - container igp-ldp-sync { - description - "Configuration and operational state relating to synchronisation - between the LDP and IS-IS"; - - container config { - description - "This container defines ISIS/IGP configuration."; - - uses isis-ldp-igp-config; - } - - container state { - config false; - description - "This container defines state information for ISIS/LDP Sync."; - - uses isis-ldp-igp-config; - } - } - } - - container igp-shortcuts { - description - "This container defines IGP shortcuts configuration and state - information."; - - uses isis-shortcuts-afi-list; - } - - container afi-safi { - description - "This container defines address-family specific configuration - and state information."; - - uses isis-afi-safi-list; - } - - uses oc-sr:sr-igp-top; - } - - grouping isis-route-preference-config { - description - "This grouping defines ISIS route preference configuration"; - - leaf external-route-preference { - type uint8 { - range "1..max"; - } - description - "Administrative Distance(preference) for external ISIS routes."; - } - - leaf internal-route-preference { - type uint8 { - range "1..max"; - } - description - "Administrative Distance(preference) for internal ISIS routes."; - } - } - - grouping isis-interfaces { - description - "This grouping defines ISIS interfaces configured on local system."; - - list interface { - key "interface-id"; - - description - "This list contains ISIS interfaces."; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "Reference to interface-id"; - } - - uses isis-interface-group; - uses oc-if:interface-ref; - } - } - - grouping isis-interface-group { - description - "This grouping defines ISIS interfaces configured on local system."; - - container config { - description - "This container defines ISIS interface configuration."; - - uses admin-config; - uses isis-interface-config; - } - - container state { - config false; - description - "This container defines state information for ISIS interfaces."; - - uses admin-config; - uses isis-interface-config; - } - - container circuit-counters { - description - "This container defines state information for ISIS circuit counters."; - - uses circuit-counters-structural; - } - - container authentication { - description - "This container defines ISIS authentication."; - - uses isis-hello-authentication-group; - } - - container afi-safi { - description - "This container defines address-family specific configuration - and state information."; - - uses isis-if-global-afi-safi-list; - } - - container levels { - description - "This container defines ISIS level specific configuration and - state information."; - - uses isis-interface-levels; - } - - container timers { - description - "This container describes ISIS interface timers configuration"; - - container config { - description - "Configuration parameters relating to interface - timers for IS-IS"; - - uses isis-interface-timers-config; - } - - container state { - config false; - description - "This container defines state information for ISIS interface timers."; - - uses isis-interface-timers-config; - } - } - - container bfd { - //TODO(bogdanov): Integrate BFD model/module - description - "This container defines BFD."; - - container config { - description - "This container defines BFD configuration parameters."; - - uses isis-bfd-config; - } - - container state { - config false; - description - "This container defines BFD state information."; - - uses isis-bfd-config; - } - } - } - - grouping isis-levels { - description - "This grouping defines global ISIS Levels."; - - list level { - key "level-number"; - - description - "Configuration and operational state parameters related to a - particular level within the IS-IS protocol instance"; - - leaf level-number { - type leafref { - path "../config/level-number"; - } - description - "Reference to ISIS level-number."; - } - - uses isis-level-group; - } - } - - grouping isis-interface-levels { - description - "This grouping defines ISIS interface Levels."; - - list level { - key "level-number"; - description - "Configuration and operational state parameters related to a - particular level on an IS-IS enabled interface."; - - leaf level-number { - type leafref { - path "../config/level-number"; - } - description - "Reference to ISIS level-number."; - } - - uses isis-interface-level-group; - } - } - - grouping isis-level-group { - description - "This grouping defines ISIS level configuration and state - information."; - - container config { - description - "This container defines ISIS level based configuration."; - - uses admin-config; - uses isis-base-level-config; - uses isis-metric-style-config; - uses isis-authentication-check-config; - } - - container state { - config false; - description - "This container defines ISIS level state information."; - - uses admin-config; - uses isis-base-level-config; - uses isis-metric-style-config; - uses isis-authentication-check-config; - } - - container system-level-counters { - description - "This container defines ISIS system level counters."; - - uses system-level-counters-structural; - } - - container link-state-database { - config false; - description - "This container defines ISIS LSDB."; - - list lsp { - key "lsp-id"; - description - "This list describes LSPs in the LSDB."; - uses lsp-state; - } - } - - container traffic-engineering { - description - "This container defines ISIS TE."; - - container config { - description - "This container defines ISIS TE configuration."; - - uses admin-config; - uses isis-te-config; - } - - container state { - config false; - description - "This container defines ISIS TE state information."; - - uses admin-config; - uses isis-te-config; - } - } - - container route-preference { - description - "This container defines Administrative Distance (or preference) - assigned to ISIS routes (level1 internal, level2 internal, level1 - external, level2 external)."; - - container config { - description - "This container defines route preference configuration."; - uses isis-route-preference-config; - } - - container state { - config false; - description - "This container defines ISIS route preference state information."; - uses isis-route-preference-config; - } - } - - container authentication { - description - "This container defines ISIS authentication."; - uses isis-authentication-group; - } - - } - - grouping isis-interface-level-group { - description - "This grouping defines ISIS interface level."; - - container config { - description - "This container defines interface ISIS level configuration."; - - uses isis-interface-level-config; - uses admin-config; - } - - container state { - config false; - description - "This container defines interface ISIS level state information."; - - uses isis-interface-level-config; - uses admin-config; - } - - container packet-counters { - description - "This container defines ISIS interface packet counters."; - - uses packet-counters-structural; - } - - container adjacencies { - config false; - description - "This container defines ISIS adjacencies."; - - list adjacency { - key "system-id"; - - description - "List of the local system's IS-IS adjacencies."; - - leaf system-id { - type leafref { - path "../state/system-id"; - } - description - "Reference to the IS neighbor."; - } - - container state { - description - "Operational state relating to the IS-IS adjacency with the - remote system"; - - uses adjacency-state; - } - } - } - - container timers { - description - "This container defines ISIS timers."; - - container config { - description - "This container defines ISIS interface hello-timers configuration."; - - uses isis-hello-timers-config; - } - - container state { - config false; - description - "This container defines ISIS interface hello-timers state."; - - uses isis-hello-timers-config; - } - } - - container afi-safi { - description - "This container defines address-family specific configuration - and state information."; - - uses isis-if-afi-safi-list; - } - - container hello-authentication { - description - "This container defines ISIS authentication."; - - uses isis-hello-authentication-group; - } - } - - - grouping isis-top { - description - "This grouping define top-level ISIS model data."; - - container isis { - description - "This container defines top-level ISIS configuration and state - information."; - - container global { - description - "This container defines global ISIS configuration and state - information."; - - uses isis-global-base; - uses inter-level-propagation-policies-structural; - } - - container levels { - description - "This container defines ISIS level configuration and state - information."; - uses isis-levels; - } - - container interfaces { - description - "This container defines global ISIS interface configuration and - state information."; - uses isis-interfaces; - } - } - } - - grouping adjacency-state { - description - "This grouping defines ISIS adjacency."; - - leaf system-id { - type oc-isis-types:system-id; - description - "ISIS neighbor system-id."; - } - - leaf neighbor-ipv4-address { - type inet:ipv4-address-no-zone; - description - "ISIS Neighbor IPv4 address."; - } - - leaf neighbor-ipv6-address { - type inet:ipv6-address-no-zone; - description - "ISIS Neighbor IPv6 address."; - } - - leaf neighbor-snpa { - type oc-isis-types:snpa; - description - "ISIS neighbor SNPA."; - } - - leaf local-extended-circuit-id { - type oc-isis-types:extended-circuit-id; - description - "Local extended circuit ID."; - } - leaf neighbor-extended-circuit-id { - type oc-isis-types:extended-circuit-id; - description - "ISIS neighbor extended circuit ID."; - } - - leaf priority { - type uint8 { - range "0..127"; - } - description - "Priority of the neighboring IS(LAN Hello only)."; - } - - leaf dis-system-id { - type oc-isis-types:system-id; - description - "DIS System ID(LAN hello only)."; - } - - leaf neighbor-circuit-type { - type oc-isis-types:level-type; - description - "Received ISIS circuit type (level-1, level-2, level-1-2)."; - } - - leaf adjacency-type { - type oc-isis-types:level-type; - description - "Formed ISIS adjacency type(level-1, level-2, level-1-2)."; - } - - leaf adjacency-state { - type oc-isis-types:isis-interface-adj-state; - description - "P2P 3-way ISIS adjacency state(up, down, init, failed)."; - reference "RFC4303. TLV 240."; - } - - leaf remaining-hold-time { - type uint16; - units seconds; - description - "Holding time in seconds for adjacency. This value is based on received - hello PDUs and the elapsed time since receipt."; - } - - leaf up-time { - type yang:timestamp; - description - "Adjacency up time."; - } - - leaf multi-topology { - type boolean; - description - "When set to true, ISIS multi-topology is supported."; - reference "RFC5129. TLV 229."; - } - - leaf-list topology { - type identityref { - base oc-isis-types:AFI_SAFI_TYPE; - } - description - "ISIS topology type support(ipv4-unicast, ipv6-unicast, - ipv4-multicast, ipv6-multicast)."; - } - - leaf restart-support { - type boolean; - description - "When set to true, Graceful-restart signaling is supported."; - } - - leaf restart-suppress { - type boolean; - description - "When set to true, adjacency is not advertised. The SA bit is used by a - starting router to request that its neighbor suppress advertisement of - the adjacency to the starting router in the neighbor's LSPs."; - } - - leaf restart-status { - type boolean; - description - "When set to true, neighbor is being helped. The RR bit is used by a - (re)starting router to signal to its neighbors that a (re)start is in - progress."; - } - - leaf-list area-address { - type oc-isis-types:area-address; - description - "List of ISIS area-address(es)."; - } - - leaf-list nlpid { - type enumeration { - enum IPV4 { - description - "IPv4 Address family."; - } - enum IPV6 { - description - "IPv6 Address family."; - } - } - description - "Supported Protocol. IPv4 is defined as (0xcc) - and IPv6 - (0x8e). ISIS reference is TLV 129."; - } - - // TODO(bogdanov): update when BFD model is integrated. - //leaf ipv4-bfd-status { - //type oc-isis-types:bfd-state; - //description - // "IPv4 BFD session status."; - //} - //leaf ipv6-bfd-status { - //type oc-isis-types:bfd-state; - //description - // "IPv4 BFD session status. "; - //} - - } - - grouping packet-counters-generic-state { - description - "Operational state parameters relating to LSP packet counters."; - - leaf received { - type yang:counter32; - description - "The number of the specified type of PDU received on the interface."; - } - leaf processed { - type yang:counter32; - description - "The number of the specified type of PDU received on the interface - that have been processed by the local system."; - } - leaf dropped { - type yang:counter32; - description - "The number of the specified type of PDU received on the interface - that have been dropped."; - } - - leaf sent { - type yang:counter32; - description - "The number of the specified type of PDU that have been sent by the - local system on the interface."; - } - - leaf retransmit { - type yang:counter32; - description - "The number of the specified type of PDU that that have been - retransmitted by the local system on the interface."; - } - } - - grouping packet-counters-structural { - description - "This grouping defines ISIS packet counter state."; - - container lsp { - description - "This container defines LSP packet counters."; - - container state { - config false; - description - "This container defines LSP PDU counters."; - - uses packet-counters-generic-state; - } - } - - container iih { - description - "This container defines IIH packet counters."; - - container state { - config false; - description - "Operational counters relating to IIH PDUs"; - - uses packet-counters-generic-state; - } - } - - container ish { - description - "This container defines ISH packet counters."; - - container state { - config false; - description - "Operational state relating to ISH PDUs."; - - uses packet-counters-generic-state; - } - } - - container esh { - description - "This container defines ESH packet counters."; - container state { - config false; - description - "Operational state relating to ESH PDUs"; - - uses packet-counters-generic-state; - } - } - - container psnp { - description - "This container defines PSNP packet counters."; - - container state { - config false; - description - "Packet counters relating to PSNPs."; - - uses packet-counters-generic-state; - } - } - - container csnp { - description - "Operational state parameters relating to CSNPs."; - - container state { - config false; - description - "Packet counters relating to CSNPs."; - - uses packet-counters-generic-state; - } - } - - container unknown { - description - "Operational state parameters relating to IS-IS PDUs that are not - otherwise classified - referred to as Unknown PDUs."; - - container state { - config false; - description - "Packet counters relating to unknown PDUs."; - - uses packet-counters-generic-state; - } - } - } - - grouping system-level-counters-state { - description - "IS-IS counters that are relevant to the system IS-IS context."; - - leaf corrupted-lsps { - type yang:counter32; - description - "Number of corrupted in-memory LSPs detected. LSPs received from the - wire with a bad checksum are silently dropped and not counted. LSPs - received from the wire with parse errors are counted by lsp-errors. MIB - Entry: SysCorrLSPs."; - } - - leaf database-overloads { - type yang:counter32; - description - "Number of times the database has become - overloaded. - MIB entry: SysLSPL(Level)DbaseOloads."; - } - - leaf manual-address-drop-from-areas { - type yang:counter32; - description - "Number of times a manual address has been dropped from area. - MIB Entry: SysManAddrDropFromAreas."; - } - - leaf exceed-max-seq-nums { - type yang:counter32; - description - "The number of times the system has attempted to exceed the maximum - sequence number. MIB Entry: SysAttmptToExMaxSeqNums."; - } - leaf seq-num-skips { - type yang:counter32; - description - "Number of times a sequence number skip has occurred. MIB Entry: - SysSeqNumSkips."; - } - - leaf own-lsp-purges { - type yang:counter32; - description - "Number of times a zero-aged copy of the system's - own LSP is received from some other node. - MIB Entry: isisSysOwnLSPPurges."; - } - - leaf id-len-mismatch { - type yang:counter32; - description - "Number of times a PDU is received with a different value for ID field - length from that of the receiving system. MIB Entry: - isisSysIDFieldLenMismatches."; - } - - leaf part-changes { - type yang:counter32; - description - "The number of partition changes detected. MIB Entry: SysPartChanges."; - } - - leaf max-area-address-mismatches { - type yang:counter32; - description - "Number of times a PDU is received with a different value for - MaximumAreaAddresses from that of the receiving system. MIB Entry: - SysMaxAreaAddrMismatches."; - } - - leaf auth-fails { - type yang:counter32; - description - "The number of authentication key failures. - MIB Entry: SysAuthFails."; - } - - leaf spf-runs { - type yang:counter32; - description - "The number of times SPF was ran at this level."; - } - - leaf auth-type-fails { - type yang:counter32; - description - "The number of authentication type mismatches."; - } - - leaf lsp-errors { - type yang:counter32; - description - "The number of received LSPs with errors."; - } - } - - grouping system-level-counters-structural { - description - "This grouping defines system level counters."; - - container state { - config false; - description - "The container defines a list of system counters for the IS."; - - uses system-level-counters-state; - } - } - - grouping circuit-counters-state { - description - "Operational state parameters relating to counters specific to one - interface or circuit."; - - leaf adj-changes { - type yang:counter32; - description - "Number of times an adjacency state change has occurred on this circuit. - MIB Entry: CircAdjChanges."; - } - - leaf init-fails { - type yang:counter32; - description - "Number of times initialization of this circuit has failed. This counts - events such as PPP NCP failures. MIB Entry: CircInitFails."; - } - - leaf rejected-adj { - type yang:counter32; - description - "Number of times an adjacency has been rejected on this circuit. MIB - Entry: CircRejAdjs."; - } - - leaf id-field-len-mismatches { - type yang:counter32; - description - "Number of times an IS-IS control PDU with an ID field length different - from that for this system has been received. - MIB Entry: CircIDFieldLenMismatches."; - } - - leaf max-area-address-mismatches { - type yang:counter32; - description - "Number of times an IS-IS control PDU with a max area address field - different from that for this system has been received. MIB Entry: - CircMaxAreaAddrMismatches."; - } - - leaf auth-type-fails { - type yang:counter32; - description - "Number of times an IS-IS control PDU with an auth type field different - from that for this system has been received. MIB Entry: - CircAuthTypeFails."; - } - - leaf auth-fails { - type yang:counter32; - description - "Number of times an IS-IS control PDU with the correct auth type has - failed to pass authentication validation. MIB Entry: CircAuthFails."; - } - - leaf lan-dis-changes { - type yang:counter32; - description - "Number of times the Designated IS has changed on this circuit at this - level. If the circuit is point to point, this count is zero. MIB Entry: - CircLANDesISChanges."; - } - - leaf adj-number { - type uint32; - description - "Number of adjacencies on this circuit. - MIB Entry: CircNumAdj."; - } - } - - grouping circuit-counters-structural { - description - "This grouping defines circuit counters."; - - container state { - config false; - description - "The container defines a list of counters for IS circuit."; - - uses circuit-counters-state; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-lacp.yang b/src/plugins/yang/openconfig/openconfig-lacp.yang deleted file mode 100644 index e49dcb6..0000000 --- a/src/plugins/yang/openconfig/openconfig-lacp.yang +++ /dev/null @@ -1,461 +0,0 @@ -module openconfig-lacp { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/lacp"; - - prefix "oc-lacp"; - - // import some basic types - import openconfig-interfaces { prefix oc-if; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-extensions { prefix oc-ext; } - - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module describes configuration and operational state - data for Link Aggregation Control Protocol (LACP) for - managing aggregate interfaces. It works in conjunction with - the OpenConfig interfaces and aggregate interfaces models."; - - oc-ext:openconfig-version "1.1.0"; - - revision "2017-05-05" { - description - "Add member local and remote port num"; - reference "1.1.0"; - } - - revision "2016-05-26" { - description - "OpenConfig public release"; - reference "1.0.2"; - } - - - // typedef statements - - typedef lacp-activity-type { - type enumeration { - enum ACTIVE { - description - "Interface is an active member, i.e., will detect and - maintain aggregates"; - } - enum PASSIVE { - description - "Interface is a passive member, i.e., it participates - with an active partner"; - } - } - description - "Describes the LACP membership type, active or passive, of the - interface in the aggregate"; - reference "IEEE 802.1AX-2008"; - } - - typedef lacp-timeout-type { - type enumeration { - enum LONG { - description - "Participant wishes to use long timeouts to detect - status of the aggregate, i.e., will expect less frequent - transmissions. Long timeout is 90 seconds."; - } - enum SHORT { - description - "Participant wishes to use short timeouts, i.e., expects - frequent transmissions to aggressively detect status - changes. Short timeout is 3 seconds."; - } - } - description - "Type of timeout used, short or long, by LACP participants"; - reference "IEEE 802.1AX-2008"; - } - - typedef lacp-synchronization-type { - type enumeration { - enum IN_SYNC { - description - "Participant is in sync with the system id and key - transmitted"; - } - enum OUT_SYNC { - description - "Participant is not in sync with the system id and key - transmitted"; - } - } - description - "Indicates LACP synchronization state of participant"; - reference "IEEE 802.1AX-2008"; - } - - typedef lacp-period-type { - type enumeration { - enum FAST { - description "Send LACP packets every second"; - } - enum SLOW { - description "Send LACP packets every 30 seconds"; - } - } - description - "Defines the period options for the time between sending - LACP messages"; - reference "IEEE 802.3ad"; - } - - // grouping statements - - - grouping aggregation-lacp-members-config { - description - "Configuration data for lacp member interfaces"; - - //currently a placeholder -- the list of member interfaces - //and their status is considered opstate only - } - - grouping aggregation-lacp-members-state { - description - "Operational status data for the member interfaces"; - - leaf interface { - type oc-if:base-interface-ref; - description - "Reference to interface member of the LACP aggregate"; - } - - leaf activity { - type lacp-activity-type; - description "Indicates participant is active or passive"; - } - - leaf timeout { - type lacp-timeout-type; - description - "The timeout type (short or long) used by the - participant"; - } - - leaf synchronization { - type lacp-synchronization-type; - description - "Indicates whether the participant is in-sync or - out-of-sync"; - } - - leaf aggregatable { - type boolean; - description - "A true value indicates that the participant will allow - the link to be used as part of the aggregate. A false - value indicates the link should be used as an individual - link"; - } - - leaf collecting { - type boolean; - description - "If true, the participant is collecting incoming frames - on the link, otherwise false"; - } - - leaf distributing { - type boolean; - description - "When true, the participant is distributing outgoing - frames; when false, distribution is disabled"; - } - - leaf system-id { - type oc-yang:mac-address; - description - "MAC address that defines the local system ID for the - aggregate interface"; - } - - leaf oper-key { - type uint16; - description - "Current operational value of the key for the aggregate - interface"; - } - - leaf partner-id { - type oc-yang:mac-address; - description - "MAC address representing the protocol partner's interface - system ID"; - } - - leaf partner-key { - type uint16; - description - "Operational value of the protocol partner's key"; - } - - leaf port-num { - type uint16; - description - "Port number of the local (actor) aggregation member"; - } - - leaf partner-port-num { - type uint16; - description - "Port number of the partner (remote) port for this member - port"; - } - } - -grouping aggregation-lacp-members-statistics { - description - "LACP packet statistics for the member interfaces"; - - container counters { - description - "LACP protocol counters"; - - leaf lacp-in-pkts { - type oc-yang:counter64; - description - "Number of LACPDUs received"; - } - - leaf lacp-out-pkts { - type oc-yang:counter64; - description - "Number of LACPDUs transmitted"; - } - - leaf lacp-rx-errors { - type oc-yang:counter64; - description - "Number of LACPDU receive packet errors"; - } - - leaf lacp-tx-errors { - type oc-yang:counter64; - description - "Number of LACPDU transmit packet errors"; - } - - leaf lacp-unknown-errors { - type oc-yang:counter64; - description - "Number of LACPDU unknown packet errors"; - } - - leaf lacp-errors { - type oc-yang:counter64; - description - "Number of LACPDU illegal packet errors"; - } - } - } - - grouping aggregation-lacp-members-top { - description - "Top-level grouping for aggregate members list"; - - container members { - config false; - description - "Enclosing container for the list of members interfaces of - the aggregate. This list is considered operational state - only so is labeled config false and has no config container"; - - list member { - key "interface"; - description - "List of member interfaces and their associated status for - a LACP-controlled aggregate interface. Member list is not - configurable here -- each interface indicates items - its participation in the LAG."; - - leaf interface { - type leafref { - path "../state/interface"; - } - description - "Reference to aggregate member interface"; - } - - - container state { - - config false; - - description - "Operational state data for aggregate members"; - - uses aggregation-lacp-members-state; - uses aggregation-lacp-members-statistics; - } - } - } - } - - grouping lacp-interfaces-config { - description - "Configuration data for each LACP-enabled interface"; - - leaf name { - type oc-if:base-interface-ref; - description - "Reference to the interface on which LACP should be - configured. The type of the target interface must be - ieee8023adLag"; - } - - leaf interval { - type lacp-period-type; - default SLOW; - description - "Set the period between LACP messages -- uses - the lacp-period-type enumeration."; - } - - leaf lacp-mode { - type lacp-activity-type; - default ACTIVE; - description - "ACTIVE is to initiate the transmission of LACP packets. - PASSIVE is to wait for peer to initiate the transmission of - LACP packets."; - //TODO:some implementations configure the LACP mode on each - //member interface rather than on the LAG interface. There - //may be use cases for this identified at a later time. - } - - leaf system-id-mac { - type oc-yang:mac-address; - description - "The MAC address portion of the node's System ID. This is - combined with the system priority to construct the 8-octet - system-id"; - } - - uses aggregation-lacp-global-config; - } - - grouping lacp-interfaces-state { - description - "Operational state data for each LACP-enabled interface"; - } - - grouping lacp-interfaces-top { - description - "Top-level grouping for LACP-enabled interfaces"; - - container interfaces { - description - "Enclosing container for the list of LACP-enabled - interfaces"; - - list interface { - key "name"; - description - "List of aggregate interfaces managed by LACP"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for each LACP aggregate interface"; - - uses lacp-interfaces-config; - } - - container state { - - config false; - - description - "Operational state data for each LACP aggregate - interface"; - - uses lacp-interfaces-config; - uses lacp-interfaces-state; - } - - uses aggregation-lacp-members-top; - } - } - } - - grouping aggregation-lacp-global-config { - description - "Configuration data for LACP aggregate interfaces"; - - - leaf system-priority { - type uint16; - description - "Sytem priority used by the node on this LAG interface. - Lower value is higher priority for determining which node - is the controlling system."; - } - } - - grouping aggregation-lacp-global-state { - description - "Operational data for LACP aggregate interfaces"; - - } - - grouping aggregation-lacp-top { - description - "Top level configuration and state variable containers for - LACP data"; - - container lacp { - description - "Configuration and operational state data for LACP protocol - operation on the aggregate interface"; - - container config { - description - "Configuration data for LACP"; - - uses aggregation-lacp-global-config; - } - - container state { - - config false; - description - "Operational state data for LACP"; - - uses aggregation-lacp-global-config; - uses aggregation-lacp-global-state; - } - uses lacp-interfaces-top; - } - } - - // data definition statements - uses aggregation-lacp-top; - - // augment statements - - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-lldp-types.yang b/src/plugins/yang/openconfig/openconfig-lldp-types.yang deleted file mode 100644 index cc7f9f5..0000000 --- a/src/plugins/yang/openconfig/openconfig-lldp-types.yang +++ /dev/null @@ -1,296 +0,0 @@ -module openconfig-lldp-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/lldp/types"; - - prefix "oc-lldp-types"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines types related to the LLDP protocol model."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2016-05-16" { - description - "Initial public revision"; - reference "0.1.0"; - } - - - // identity statements - - identity LLDP_SYSTEM_CAPABILITY { - description - "Base identity for standard LLDP system capabilities. - The system capabilities field contains a bit-map of the - capabilities that define the primary function(s) of - the system. A system may advertise more than one capability."; - reference - "Table 8-4 System Capabilities, IEEE 802.1AB-2009"; - } - - identity OTHER { - base LLDP_SYSTEM_CAPABILITY; - description - "Other capability not specified; bit position 1"; - } - - identity REPEATER { - base LLDP_SYSTEM_CAPABILITY; - description - "Repeater capability; bit position 2"; - reference - "IETF RFC 2108"; - } - - identity MAC_BRIDGE { - base LLDP_SYSTEM_CAPABILITY; - description - "MAC bridge capability; bit position 3"; - reference - "IEEE Std 802.1D"; - } - - identity WLAN_ACCESS_POINT { - base LLDP_SYSTEM_CAPABILITY; - description - "WLAN access point capability; bit position 4"; - reference - "IEEE Std 802.11 MIB"; - } - - identity ROUTER { - base LLDP_SYSTEM_CAPABILITY; - description - "Router; bit position 5"; - reference - "IETF RFC 1812"; - } - - identity TELEPHONE { - base LLDP_SYSTEM_CAPABILITY; - description - "Telephone capability; bit position 6"; - reference - "IETF RFC 4293"; - } - - identity DOCSIS_CABLE_DEVICE { - base LLDP_SYSTEM_CAPABILITY; - description - "DOCSIS cable device; bit position 7"; - reference - "IETF RFC 4639 and IETF RFC 4546"; - } - - identity STATION_ONLY { - base LLDP_SYSTEM_CAPABILITY; - description - "Station only capability, for devices that implement only an - end station capability, and for which none of the other - capabilities apply; bit position 8"; - reference - "IETF RFC 4293"; - } - - identity C_VLAN { - base LLDP_SYSTEM_CAPABILITY; - description - "C-VLAN component of a VLAN Bridge; bit position 9"; - reference - "IEEE Std 802.1Q"; - } - - identity S_VLAN { - base LLDP_SYSTEM_CAPABILITY; - description - "S-VLAN component of a VLAN Bridge; bit position 10"; - reference - "IEEE Std 802.1Q"; - } - - identity TWO_PORT_MAC_RELAY { - base LLDP_SYSTEM_CAPABILITY; - description - "Two-port MAC Relay (TPMR) capability; bit position 11"; - reference - "IEEE Std 802.1Q"; - } - - identity LLDP_TLV { - description - "A base identity which describes the TLVs in LLDP"; - } - - identity CHASSIS_ID { - base LLDP_TLV; - description - "The chassis identifier of the device associated with - the transmitting LLDP agent"; - reference "IEEE Std 802.1AB"; - } - - identity PORT_ID { - base LLDP_TLV; - description - "The port identifier associated with the interface - on with the LLDP agent is transmitting"; - reference "IEEE Std 802.1AB"; - } - - identity PORT_DESCRIPTION { - base LLDP_TLV; - description - "The description of the port that is associated with - the interface on which the LLDP agent is transmitting"; - reference "IEEE Std 802.1AB"; - } - - identity SYSTEM_NAME { - base LLDP_TLV; - description - "The assigned name (sysName or hostname) of the device - which is transmitting the LLDP PDU"; - reference "IEEE Std 802.1AB"; - } - - identity SYSTEM_DESCRIPTION { - base LLDP_TLV; - description - "The description (sysDescr) of the device which is - transmitting the LLDP PDU"; - reference "IEEE Std 802.1AB"; - } - - identity SYSTEM_CAPABILITIES { - base LLDP_TLV; - description - "The primary functions of the device transmitting the - LLDP PDU and their administrative status"; - reference "IEEE Std 802.1AB"; - } - - identity MANAGEMENT_ADDRESS { - base LLDP_TLV; - description - "The address associated with the device transmitting the - LLDP PDU which can be used for higher-layer network - management"; - reference "IEEE Std 802.1AB"; - } - - // typedef statements - - typedef chassis-id-type { - type enumeration { - enum CHASSIS_COMPONENT { - description - "Chassis identifier based on the value of entPhysicalAlias - object defined in IETF RFC 2737"; - } - enum INTERFACE_ALIAS { - description - "Chassis identifier based on the value of ifAlias object - defined in IETF RFC 2863"; - } - enum PORT_COMPONENT { - description - "Chassis identifier based on the value of entPhysicalAlias - object defined in IETF RFC 2737 for a port or backplane - component"; - } - enum MAC_ADDRESS { - description - "Chassis identifier based on the value of a unicast source - address (encoded in network byte order and IEEE 802.3 - canonical bit order), of a port on the containing chassis - as defined in IEEE Std 802-2001"; - } - enum NETWORK_ADDRESS { - description - "Chassis identifier based on a network address, - associated with a particular chassis. The encoded address - is composed of two fields. The first field is a single - octet, representing the IANA AddressFamilyNumbers value - for the specific address type, and the second field is the - network address value"; - } - enum INTERFACE_NAME { - description - "Chassis identifier based on the name of the interface, - e.g., the value of ifName object defined in IETF RFC 2863"; - } - enum LOCAL { - description - "Chassis identifier based on a locally defined value"; - } - } - description - "Type definition with enumerations describing the source of - the chassis identifier"; - reference - "IEEE 802.1AB LLDP MIB"; - } - - typedef port-id-type { - type enumeration { - enum INTERFACE_ALIAS { - description - "Chassis identifier based on the value of ifAlias object - defined in IETF RFC 2863"; - } - enum PORT_COMPONENT { - description - "Port identifier based on the value of entPhysicalAlias - object defined in IETF RFC 2737 for a port component"; - } - enum MAC_ADDRESS { - description - "Port identifier based on the value of a unicast source - address (encoded in network byte order and IEEE 802.3 - canonical bit order) associated with a port"; - } - enum NETWORK_ADDRESS { - description - "Port identifier based on a network address, - associated with a particular port"; - } - enum INTERFACE_NAME { - description - "Port identifier based on the name of the interface, - e.g., the value of ifName object defined in IETF RFC 2863"; - } - enum AGENT_CIRCUIT_ID { - description - "Port identifer based on the circuit id in the DHCP - relay agent information option as defined in IETF - RFC 3046"; - } - enum LOCAL { - description - "Port identifier based on a locally defined alphanumeric - string"; - } - } - description - "Type definition with enumerations describing the basis of - the port identifier"; - reference - "IEEE 802.1AB LLDP MIB"; - } - - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-lldp.yang b/src/plugins/yang/openconfig/openconfig-lldp.yang deleted file mode 100644 index c5381ef..0000000 --- a/src/plugins/yang/openconfig/openconfig-lldp.yang +++ /dev/null @@ -1,650 +0,0 @@ -module openconfig-lldp { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/lldp"; - - prefix "oc-lldp"; - - import openconfig-lldp-types { prefix oc-lldp-types; } - import openconfig-interfaces { prefix oc-if; } - import ietf-yang-types { prefix yang; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - for the LLDP protocol."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2018-07-17" { - description - "Adds ttl to lldp-neighbor-state"; - reference "0.2.0"; - } - - revision "2016-05-16" { - description - "Initial public revision"; - reference "0.1.0"; - } - - - // identity statements - - - // grouping statements - - grouping lldp-common-counters { - description - "Definition of global and per-interface counters"; - - leaf frame-in { - type yang:counter64; - description - "The number of lldp frames received."; - } - - leaf frame-out { - type yang:counter64; - description - "The number of frames transmitted out."; - } - - leaf frame-error-in { - type yang:counter64; - description - "The number of LLDP frames received with errors."; - } - - leaf frame-discard { - type yang:counter64; - description - "The number of LLDP frames received and discarded."; - } - - leaf tlv-discard { - type yang:counter64; - description - "The number of TLV frames received and discarded."; - } - - leaf tlv-unknown { - type yang:counter64; - description - "The number of frames received with unknown TLV."; - } - - leaf last-clear { - type yang:date-and-time; - description - "Indicates the last time the counters were - cleared."; - } - } - - grouping lldp-global-counters { - description - "Definition of global LLDP counters"; - - uses lldp-common-counters; - - leaf tlv-accepted { - type yang:counter64; - description - "The number of valid TLVs received."; - } - - leaf entries-aged-out { - type yang:counter64; - description - "The number of entries aged out due to timeout."; - } - - } - - grouping lldp-interface-counters { - description - "Definition of per-interface LLDP counters"; - - uses lldp-common-counters; - - leaf frame-error-out { - type yang:counter64; - description - "The number of frame transmit errors on the - interface."; - } - } - - grouping lldp-system-info-config { - description - "Configuration data for system-level local and remote - LLDP information"; - - leaf system-name { - type string { - length 0..255; - } - description - "The system name field shall contain an alpha-numeric string - that indicates the system's administratively assigned name. - The system name should be the system's fully qualified domain - name. If implementations support IETF RFC 3418, the sysName - object should be used for this field."; - } - - leaf system-description { - type string { - length 0..255; - } - description - "The system description field shall contain an alpha-numeric - string that is the textual description of the network entity. - The system description should include the full name and - version identification of the system's hardware type, - software operating system, and networking software. If - implementations support IETF RFC 3418, the sysDescr object - should be used for this field."; - } - - leaf chassis-id { - type string; - description - "The Chassis ID is a mandatory TLV which identifies the - chassis component of the endpoint identifier associated with - the transmitting LLDP agent"; - } - - leaf chassis-id-type { - type oc-lldp-types:chassis-id-type; - description - "This field identifies the format and source of the chassis - identifier string. It is an enumerator defined by the - LldpChassisIdSubtype object from IEEE 802.1AB MIB."; - } - } - - grouping lldp-system-info-state { - description - "Operational state data reported for the local and remote - systems"; - - } - - grouping lldp-neighbor-config { - description - "Configuration data for LLDP neighbors"; - - } - - grouping lldp-neighbor-state { - description - "Operational state data for LLDP neighbors"; - - leaf id { - type string; - description - "System generated identifier for the neighbor on the - interface."; - } - - leaf age { - type uint64; - units "seconds"; - description - "Age since discovery"; - } - - leaf last-update { - type int64; - description - "Seconds since last update received."; - } - - leaf ttl { - type uint16; - units "seconds"; - description - "The time-to-live (TTL) is a mandatory TLV which indicates - how long information from the neighbor should be considered - valid."; - } - - leaf port-id { - type string; - description - "The Port ID is a mandatory TLV which identifies the port - component of the endpoint identifier associated with the - transmitting LLDP agent. If the specified port is an IEEE - 802.3 Repeater port, then this TLV is optional."; - } - - leaf port-id-type { - type oc-lldp-types:port-id-type; - description - "This field identifies the format and source of the port - identifier string. It is an enumerator defined by the - PtopoPortIdType object from RFC2922."; - } - - leaf port-description { - type string; - description - "The binary string containing the actual port identifier for - the port which this LLDP PDU was transmitted. The source and - format of this field is defined by PtopoPortId from - RFC2922."; - } - - leaf management-address { - type string; - description - "The Management Address is a mandatory TLV which identifies a - network address associated with the local LLDP agent, which - can be used to reach the agent on the port identified in the - Port ID TLV."; - } - - leaf management-address-type { - type string; - description - "The enumerated value for the network address type - identified in this TLV. This enumeration is defined in the - 'Assigned Numbers' RFC [RFC3232] and the - ianaAddressFamilyNumbers object."; - } - } - - grouping lldp-capabilities-config { - description - "Configuration data for LLDP capabilities"; - } - - grouping lldp-capabilities-state { - description - "Operational state data for LLDP capabilities"; - - leaf name { - type identityref { - base oc-lldp-types:LLDP_SYSTEM_CAPABILITY; - } - description - "Name of the system capability advertised by the neighbor. - Capabilities are represented in a bitmap that defines the - primary functions of the system. The capabilities are - defined in IEEE 802.1AB."; - } - - leaf enabled { - type boolean; - description - "Indicates whether the corresponding system capability is - enabled on the neighbor."; - reference - "Sec 8.5.8.2 of IEEE 802.1AB-2009"; - } - } - - grouping lldp-capabilities-top { - description - "Top-level grouping for LLDP capabilities"; - - container capabilities { - config false; - description - "Enclosing container for list of LLDP capabilities"; - - list capability { - key "name"; - description - "List of LLDP system capabilities advertised by the - neighbor"; - - leaf name { - type leafref { - path "../state/name"; - } - description - "Reference to capabilities list key"; - } - - container config { - description - "Configuration data for LLDP capabilities"; - - uses lldp-capabilities-config; - } - - container state { - - config false; - - description - "Operational state data for LLDP capabilities"; - - uses lldp-capabilities-config; - uses lldp-capabilities-state; - } - } - } - } - - grouping lldp-custom-tlv-config { - description - "Configuration data for custom LLDP TLVs"; - } - - grouping lldp-custom-tlv-state { - description - "Operational state data for custom LLDP TLVs"; - - leaf type { - type int32; - description - "The integer value identifying the type of information - contained in the value field."; - } - - leaf oui { - type string; - description - "The organizationally unique identifier field shall contain - the organization's OUI as defined in Clause 9 of IEEE Std - 802. The high-order octet is 0 and the low-order 3 octets - are the SMI Network Management Private Enterprise Code of - the Vendor in network byte order, as defined in the - 'Assigned Numbers' RFC [RFC3232]."; - } - - leaf oui-subtype { - type string; - description - "The organizationally defined subtype field shall contain a - unique subtype value assigned by the defining organization."; - } - - // TODO: consider making this string type - leaf value { - type binary; - description - "A variable-length octet-string containing the - instance-specific information for this TLV."; - } - } - - grouping lldp-custom-tlv-top { - description - "Top-level grouping for custom LLDP TLVs"; - - container custom-tlvs { - config false; - description - "Enclosing container for list of custom TLVs from a - neighbor"; - - list tlv { - key "type oui oui-subtype"; - description - "List of custom LLDP TLVs from a neighbor"; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to type list key"; - } - - leaf oui { - type leafref { - path "../state/oui"; - } - description - "Reference to oui list key"; - } - - leaf oui-subtype { - type leafref { - path "../state/oui-subtype"; - } - description - "Reference to oui-subtype list key"; - } - - container config { - description - "Configuration data "; - - uses lldp-custom-tlv-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses lldp-custom-tlv-config; - uses lldp-custom-tlv-state; - } - } - } - } - - grouping lldp-neighbor-top { - description - "Top-level grouping for the LLDP neighbor list"; - - container neighbors { - config false; - description - "Enclosing container for list of LLDP neighbors on an - interface"; - - list neighbor { - key "id"; - description - "List of LLDP neighbors"; - - leaf id { - type leafref { - path "../state/id"; - } - description - " "; - } - - container config { - description - "Configuration data "; - - uses lldp-neighbor-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses lldp-system-info-config; - uses lldp-system-info-state; - uses lldp-neighbor-config; - uses lldp-neighbor-state; - } - - uses lldp-custom-tlv-top; - uses lldp-capabilities-top; - } - } - } - - grouping lldp-interface-config { - description - "Configuration data for LLDP on each interface"; - - leaf name { - type oc-if:base-interface-ref; - description - "Reference to the LLDP Ethernet interface"; - } - - leaf enabled { - type boolean; - default "true"; - description - "Enable or disable the LLDP protocol on the interface."; - } - } - - grouping lldp-interface-state { - description - "Operational state data for LLDP on each interface"; - - container counters { - description - "LLDP counters on each interface"; - - uses lldp-interface-counters; - } - } - - grouping lldp-interface-top { - description - "Top-level grouping "; - - container interfaces { - description - "Enclosing container "; - - list interface { - key "name"; - description - "List of interfaces on which LLDP is enabled / available"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for LLDP on each interface"; - - uses lldp-interface-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses lldp-interface-config; - uses lldp-interface-state; - } - - uses lldp-neighbor-top; - } - } - } - - - grouping lldp-config { - description - "Configuration data for global LLDP parameters"; - - leaf enabled { - type boolean; - default "true"; - description - "System level state of the LLDP protocol."; - } - - leaf hello-timer { - type uint64; - units "seconds"; - description - "System level hello timer for the LLDP protocol."; - } - - leaf-list suppress-tlv-advertisement { - type identityref { - base oc-lldp-types:LLDP_TLV; - } - description - "Indicates whether the local system should suppress the - advertisement of particular TLVs with the LLDP PDUs that it - transmits. Where a TLV type is specified within this list, it - should not be included in any LLDP PDU transmitted by the - local agent."; - } - } - - grouping lldp-state { - description - "Operational state data for global LLDP parameters"; - - container counters { - description - "Global LLDP counters"; - - uses lldp-global-counters; - } - } - - grouping lldp-top { - description - "Top-level grouping for LLDP model"; - - container lldp { - description - "Top-level container for LLDP configuration and state data"; - - container config { - description - "Configuration data "; - - uses lldp-config; - uses lldp-system-info-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses lldp-config; - uses lldp-system-info-config; - uses lldp-system-info-state; - uses lldp-state; - } - - uses lldp-interface-top; - } - } - - // data definition statements - - uses lldp-top; - - -} diff --git a/src/plugins/yang/openconfig/openconfig-module-catalog.yang b/src/plugins/yang/openconfig/openconfig-module-catalog.yang deleted file mode 100644 index 673fe95..0000000 --- a/src/plugins/yang/openconfig/openconfig-module-catalog.yang +++ /dev/null @@ -1,786 +0,0 @@ -module openconfig-module-catalog { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/module-catalog"; - - prefix "oc-cat"; - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-catalog-types { prefix oc-cat-types; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module provides a schema for cataloging and descrbing - YANG models published across various organizations. The catalog - contains several categories of data: - - * organizations -- entities that publish and/or maintain - individual YANG modules or groups of modules - - * modules -- information regarding individual YANG modules, - including their versions, dependencies, submodules, and how - to access them - - * release bundles -- groups of modules that are compatible and - consistent with each other (as determined by the publisher of - of the bundle). The release bundle does not necessarily - correspond to a functional area, e.g., it could the entire - set of modules published by an organization - - * feature bundles -- sets of schema paths across a - release bundle that provide a specific set of functionality - - * implementations -- information about available module and/or - bundle implementations and their status"; - - oc-ext:openconfig-version "0.2.1"; - - revision "2017-05-01" { - description - "Fix to module dependency list"; - reference "0.2.1"; - } - - revision "2017-03-08" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - revision "2016-02-15" { - description - "Initial OpenConfig public release"; - reference "0.1.0"; - } - - - - // grouping statements - - grouping catalog-module-common-config { - description - "Data definitions common for both bundles and standalone - modules"; - - leaf name { - type string; - description - "The name of the module or bundle. For modules, this - should reflect the 'module' or 'submodule' - statement in the YANG module file. - - For bundles, this is the canonical name for the overall - bundle of modules which is to be released together. - This name should be consistent over multiple - releases"; - } - - leaf version { - type oc-cat-types:module-version-type; - description - "For individual modules, this is the version number, e.g., - a semantic version. The version may be the same as the date - indicated in the module revision statement. - - For bundles, this is a semantic version number for the - overall bundle. This version is to be defined as per the - approach specified in the OpenConfig semantic version - guidance - and is of the form x.y.z, where x is the major - version, y is the minor version, and z is the patch level"; - reference - "Semantic versioning for OpenConfig models"; - } - } - - grouping feature-bundle-included-reference { - description - "References to the included feature bundles"; - - leaf name { - type leafref { - path "../../../../../../../organizations/" + - "organization[name=current()/../publisher]/" + - "feature-bundles/feature-bundle/name"; - } - description - "Name of the referenced feature bundle"; - } - - leaf publisher { - type leafref { - path "../../../../../../../organizations/organization/" + - "name"; - } - description - "Publisher of the referenced feature bundle"; - } - - leaf version { - type oc-cat-types:module-version-type; - description - "Version of the referenced feature bundle"; - } - } - - grouping catalog-implementation-bundle-config { - description - "References to the feature bundles supported by an - implementation"; - - uses feature-bundle-included-reference; - } - - grouping catalog-implementation-bundle-top { - description - "Top-level grouping for the list of feature bundles - supported by an implementation"; - - container feature-bundles { - description - "Enclosing container for the list of feature bundles"; - - list feature-bundle { - key "name version"; - description - "List of feature bundles supported by the implementation"; - - uses catalog-implementation-bundle-config; - } - } - } - - grouping catalog-implementation-config { - description - "Data describing any available implementations"; - - leaf id { - type string; - description - "An identifier for the implementation, provided by the - implementor. This id should uniquely identify a specific - implementation of the module, e.g., based on the vendor, - platform, and platform version."; - } - - leaf description { - type string; - description - "A text summary of important information about the - implementation"; - } - - leaf reference { - type union { - type oc-inet:uri; - type string; - } - description - "A URI (preferred) or text reference to more detailed - information about the implementation."; - } - - - leaf platform { - type string; - description - "Name of the platform on which the implementation - is available -- this could be the model name of a network - device, a server OS, etc."; - } - - leaf platform-version { - type string; - description - "Implementor-defined version name or number of the - module implementation, corresponding to the platform. - This could be the firmware version of a network device - such as a router, OS version, or other server platform - version."; - } - - leaf status { - type identityref { - base oc-cat-types:IMPLEMENTATION_STATUS_TYPE; - } - description - "Indicates the status of the implementation, e.g., - complete, partial, in-progress, etc. Implementors - may define additional values for the base identity"; - } - } - - grouping catalog-implementation-top { - description - "Top level grouping for information on model implementations"; - - container implementations { - description - "Container for module implementation information"; - - list implementation { - key "id"; - description - "List of available implementations, keyed by an identifier - provided by either the implementor or the module - maintainer. Such a key avoids needing a complex composite - key to uniquely identify an implementation."; - - uses catalog-implementation-config; - uses catalog-implementation-bundle-top; - } - } - } - - grouping catalog-module-dependency-config { - description - "Information about module dependencies"; - - - leaf-list required-module { - type string; - description - "List of names of modules that are imported by the - current module. This list should reflect all of the 'import' - statements in the module. Release bundles should be used to - indicate which versions of the imported module are used - (or are compatible) with the current module"; - } - } - - grouping catalog-module-dependency-top { - description - "Top-level grouping for module dependency data"; - - container dependencies { - description - "Data about dependencies of the module"; - - uses catalog-module-dependency-config; - } - - } - - grouping catalog-module-classification-config { - description - "Data describing the module's classification(s)"; - - leaf category { - type identityref { - base oc-cat-types:MODULE_CATEGORY_BASE; - } - description - "Categorization of the module based on identities defined - or used by the publishing organizations."; - } - - leaf subcategory { - type identityref { - base oc-cat-types:MODULE_SUBCATEGORY_BASE; - } - description - "Sub-categorization of the module based on identities - defined or used by the publishing organizations."; - } - - leaf deployment-status { - type identityref { - base oc-cat-types:MODULE_STATUS_TYPE; - } - description - "Deployment status of the module -- experimental, - standards-track, production, etc."; - } - } - - grouping catalog-module-classification-top { - description - "Data definitions related to module classfications"; - - container classification { - description - "Container for data describing the module's classification"; - - uses catalog-module-classification-config; - } - } - - grouping catalog-module-access-config { - description - "Data pertaining to retrieval and usage of the module"; - - leaf uri { - type oc-inet:uri; - description - "URI where module can be downloaded. Modules may be - made available from the catalog maintainer, or directly - from the publisher"; - } - - leaf md5-hash { - type string; - description - "Optional MD5 hash of the module file. If specified, the - hash may be used by users to validate data integrity"; - } - } - - grouping catalog-module-access-top { - description - "Top level groupig for data related to accessing a module - or submodule"; - - container access { - description - "Container for data pertaining to retrieval and usage of the - module"; - - uses catalog-module-access-config; - } - } - - grouping catalog-module-submodule-config { - description - "Data definitions for submodules belonging to a - module"; - - leaf name { - type string; - description - "Name of the submodule as indicated by its top-level - 'submodule' statement"; - } - - } - - grouping catalog-module-submodule-top { - description - "Top-level grouping for submodule information"; - - container submodules { - description - "Data for the submodules belonging to a submodule. If the - module does not have any submodules, this container - should be empty."; - - list submodule { - key "name"; - description - "List of submodules included by a module. All submodules - specified by 'include' statements in the module should be - included in this list."; - - uses catalog-module-submodule-config; - uses catalog-module-access-top; - } - } - } - - grouping catalog-module-base-config { - description - "Basic information describing the module, e.g., the - YANG metadata in the module preface."; - - - leaf namespace { - type string; - description - "Published namespace of module, i.e., defined by the - 'namespace' "; - } - - leaf prefix { - type string; - description - "Published prefix of the module"; - } - - leaf revision { - type string; - description - "Date in the revision statement of the module"; - } - - leaf summary { - type string; - description - "Summary description of the module"; - } - } - - grouping release-bundle-member-config { - description - "Data for each member of a bundle"; - - leaf id { - type string; - description - "Identifier for the bundle member"; - } - - leaf type { - type identityref { - base oc-cat-types:CATALOG_MEMBER_TYPE; - } - description - "The type of member that is to be included within the - release bundle. Release bundles may include modules and - other release bundles. Both member modules and member - bundles should specify the list of compatible versions."; - } - - leaf module { - when "../type = 'oc-cat-types:MODULE'" { - description - "The module name is specified for bundle membrs that are - modules"; - } - type leafref { - path "../../../../../../../organizations/" + - "organization[name=current()/../publisher]/modules/" + - "module/name"; - } - description - "Name of the module set which is included in this bundle - - for example, 'openconfig-bgp'"; - } - - leaf release-bundle { - when "../type = 'oc-cat-types:RELEASE_BUNDLE'" { - description - "The release bundle is specified for bundle members that - are release bundles"; - } - type leafref { - path "../../../../../../../organizations/" + - "organization[name=current()/../publisher]/" + - "release-bundles/release-bundle/name"; - } - description - "Name of the module set which is included in this bundle - - for example, 'openconfig-bgp'"; - } - - leaf publisher { - type leafref { - path "../../../../../../../organizations/organization/" + - "name"; - } - description - "Reference to the name of the publishing organization"; - } - - leaf-list compatible-versions { - type oc-cat-types:module-version-type; - description - "A list of semantic version specification of the versions - of the specified module or release bundle which are - compatible when building this version of the bundle. - - Version specifications may be added when changes are made - to a module within a bundle, and this does not affect the - interaction between it and other modules. It is expected - that backwards compatible changes to an individual module or - member bundle do not affect the compatibility of that - with other members, and hence wildcard matches are allowed - within this list."; - } - } - - grouping release-bundle-member-top { - - description - "Parameters relating to models within release bundles"; - - container members { - description - "List of bundle members which make up this release bundle. A - member is defined as an individual YANG module specified - in the YANG catalogue, or another release - bundle which can be used to group multiple YANG - models together."; - - list member { - key "id"; - description - "A set of modules or bundles which are part of the bundle - of models. For example, if 'ietf-yang-types' were to be - specified within the bundle, then this would refer to the - individual entry within the module catalogue. If the type - of the entry is set to bundle, then for example, - openconfig-bgp could be referenced - which itself consists - of separate modules."; - - uses release-bundle-member-config; - - } - } - } - - grouping release-bundle-top { - description - "Top-level container for a release bundle"; - - container release-bundles { - description - "List of release bundles"; - - list release-bundle { - key "name version"; - - description - "List of release bundles - sets of modules and/or - bundles which are interoperable"; - - uses catalog-module-common-config; - uses release-bundle-member-top; - } - } - } - - grouping feature-bundle-release-config { - description - "Data definitions to identify the release bundle that the - feature bundle is based on."; - - leaf name { - type leafref { - path "../../../../release-bundles/release-bundle/name"; - } - description - "Reference to the name of the release bundle used for the - feature paths."; - } - - leaf version { - type leafref { - path "../../../../release-bundles/" + - "release-bundle[name=current()/../name]/version"; - } - description - "Reference to the release bundle version used for the - feature paths"; - } - - leaf publisher { - type leafref { - path "../../../../release-bundles/" + - "release-bundle[name=current()/../name]/publisher"; - } - description - "Reference to the publisher of the release bundle used for - the feature paths"; - } - } - - grouping feature-bundle-release-top { - description - "Top-level grouping for data about the release bundle used - to specify the feature bundle"; - - container release-bundle { - description - "Data to identify the release bundle from which the feature - paths should be specified. If the feature crosses - release bundles, a new release bundle should be - created to support the feature bundle."; - - leaf name { - type leafref { - path "../../../../../../organizations/" + - "organization[name=current()/../publisher]/" + - "release-bundles/release-bundle/name"; - } - description - "Name of the module set which is included in this bundle - - for example, 'openconfig-bgp'"; - } - - leaf publisher { - type leafref { - path "../../../../../../organizations/organization/" + - "name"; - } - description - "Reference to the name of the publishing organization"; - } - - leaf version { - type oc-cat-types:module-version-type; - description - "Version of the referenced release bundle"; - } - } - } - - - grouping feature-bundle-config { - description - "Data definitions for the feature bundle"; - - uses catalog-module-common-config; - - leaf-list path { - type string; - description - "The list of schema paths included in the feature. The - paths specify subtrees, i.e., all data underneath the - specified path are included in the feature."; - } - } - - grouping feature-bundle-feature-config { - description - "Data definitions for included feature bundles"; - - uses feature-bundle-included-reference; - } - - grouping feature-bundle-feature-top { - description - "Top level grouping for the list of included feature - bundles"; - - container feature-bundles { - description - "Enclosing container for the list of included feature - bundles. Feature bundles may be composed from other - smaller feature units"; - - list feature-bundle { - key "name"; - description - "The list of feature bundles included in the current - feature bundle."; - - uses feature-bundle-feature-config; - } - } - - } - - - grouping feature-bundle-top { - description - "Top-level grouping for OpenConfig feature bundles"; - - container feature-bundles { - description - "Enclosing container for the list of feature bundles"; - - list feature-bundle { - key "name version"; - description - "List of feature bundles"; - - uses feature-bundle-config; - uses feature-bundle-release-top; - uses feature-bundle-feature-top; - } - } - } - - grouping catalog-module-top { - description - "Top level structure of the module catalog"; - - container modules { - description - "Modules published by this organization"; - - list module { - key "name version"; - description - "List of published modules from the organization"; - - uses catalog-module-common-config; - uses catalog-module-base-config; - uses catalog-module-classification-top; - uses catalog-module-dependency-top; - uses catalog-module-access-top; - uses catalog-module-submodule-top; - } - } - } - - grouping catalog-organization-config { - description - "Top level grouping for data related to an organization that - publishes module, bundles, etc."; - - leaf name { - type string; - description - "Name of the maintaining organization -- the name should be - supplied in the official format used by the organization. - Standards Body examples: - IETF, IEEE, MEF, ONF, etc. - Commercial entity examples: - AT&T, Facebook, <Vendor> - Name of industry forum examples: - OpenConfig, OpenDaylight, ON.Lab"; - } - - leaf type { - type identityref { - base oc-cat-types:ORGANIZATION_TYPE; - } - description - "Type of the publishing organization"; - } - - leaf contact { - type string; - description - "Contact information for the publishing organization (web - site, email address, etc.)"; - } - } - - grouping catalog-organization-top { - description - "Top level grouping for list of maintaining organizations"; - - container organizations { - description - "List of organizations owning modules"; - - list organization { - key "name"; - - description - "List of organizations publishing YANG modules or - module bundles"; - - uses catalog-organization-config; - uses catalog-module-top; - uses release-bundle-top; - uses feature-bundle-top; - uses catalog-implementation-top; - } - } - } - - - grouping catalog-top { - description - "Top-level grouping for the YANG model catalog"; - - uses catalog-organization-top; - } - - // data definition statements - - uses catalog-top; - -} diff --git a/src/plugins/yang/openconfig/openconfig-mpls-igp.yang b/src/plugins/yang/openconfig/openconfig-mpls-igp.yang deleted file mode 100644 index 267515c..0000000 --- a/src/plugins/yang/openconfig/openconfig-mpls-igp.yang +++ /dev/null @@ -1,129 +0,0 @@ -submodule openconfig-mpls-igp { - - yang-version "1"; - - belongs-to "openconfig-mpls" { - prefix "oc-mpls"; - } - - - // import some basic types - import openconfig-mpls-ldp { prefix oc-ldp; } - import openconfig-extensions { prefix oc-ext; } - - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Configuration generic configuration parameters for IGP-congruent - LSPs"; - - oc-ext:openconfig-version "3.0.0"; - - revision "2018-07-02" { - description - "Add new RSVP-TE statistics, remove associated-rsvp-session - leaf. Remove use of date-and-time."; - reference "3.0.0"; - } - - revision "2018-06-16" { - description - "Included attributes for base LDP configuration."; - reference "2.6.0"; - } - - revision "2018-06-13" { - description - "Add ttl-propagation to global MPLS config"; - reference "2.5.0"; - } - - revision "2018-06-05" { - description - "Fixed bugs in when statements on RSVP-TE attributes"; - reference "2.4.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "2.4.1"; - } - - revision "2017-06-21" { - description - "Add TC bits typedef."; - reference "2.4.0"; - } - - revision "2017-03-22" { - description - "Add RSVP calculated-absolute-subscription-bw"; - reference "2.3.0"; - } - - revision "2017-01-26" { - description - "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; - reference "2.2.0"; - } - - revision "2016-12-15" { - description - "Add additional MPLS parameters"; - reference "2.1.0"; - } - - revision "2016-09-01" { - description - "Revisions based on implementation feedback"; - reference "2.0.0"; - } - - revision "2016-08-08" { - description - "Public release of MPLS models"; - reference "1.0.1"; - } - - // grouping statements - - - grouping igp-lsp-common { - description - "common definitions for IGP-congruent LSPs"; - - } - - - grouping igp-lsp-setup { - description - "signaling protocol definitions for IGP-based LSPs"; - - container path-setup-protocol { - description - "select and configure the signaling method for - the LSP"; - - // uses path-setup-common; - uses oc-ldp:igp-lsp-ldp-setup; - } - } - - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-mpls-ldp.yang b/src/plugins/yang/openconfig/openconfig-mpls-ldp.yang deleted file mode 100644 index ade7876..0000000 --- a/src/plugins/yang/openconfig/openconfig-mpls-ldp.yang +++ /dev/null @@ -1,873 +0,0 @@ -module openconfig-mpls-ldp { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/ldp"; - - prefix "oc-ldp"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-types { prefix oc-types; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Configuration of Label Distribution Protocol global and LSP- - specific parameters for IGP-congruent LSPs. - - This model reuses data items defined in the IETF YANG model for - LDP described by draft-ietf-mpls-ldp-yang-04, YANG Data Model for - MPLS LDP, following an alternate structure. - - Portions of this code were derived from draft-ietf-mpls-ldp-yang-04. - Please reproduce this note if possible. - - IETF code is subject to the following copyright and license: - Copyright (c) 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)."; - - oc-ext:openconfig-version "3.0.0"; - - revision "2018-07-02" { - description - "Add new RSVP-TE statistics, remove associated-rsvp-session - leaf. Remove use of date-and-time."; - reference "3.0.0"; - } - - revision "2018-06-16" { - description - "Included attributes for base LDP configuration."; - reference "2.6.0"; - } - - revision "2018-06-13" { - description - "Add ttl-propagation to global MPLS config"; - reference "2.5.0"; - } - - revision "2018-06-05" { - description - "Fixed bugs in when statements on RSVP-TE attributes"; - reference "2.4.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "2.4.1"; - } - - revision "2017-06-21" { - description - "Add TC bits typedef."; - reference "2.4.0"; - } - - revision "2017-03-22" { - description - "Add RSVP calculated-absolute-subscription-bw"; - reference "2.3.0"; - } - - revision "2017-01-26" { - description - "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; - reference "2.2.0"; - } - - revision "2016-12-15" { - description - "Add additional MPLS parameters"; - reference "2.1.0"; - } - - revision "2016-09-01" { - description - "Revisions based on implementation feedback"; - reference "2.0.0"; - } - - revision "2016-08-08" { - description - "Public release of MPLS models"; - reference "1.0.1"; - } - - // typedef statements - - typedef mpls-ldp-adjacency-type { - type enumeration { - enum LINK { - description - "Link LDP adjacency"; - } - enum TARGETED { - description - "Targeted LDP adjacency"; - } - } - description - "enumerated type for specifying LDP adjacencies"; - } - - typedef mpls-ldp-afi { - type enumeration { - enum IPV4 { - description - "IPv4 AFI for LDP adjancencies"; - } - enum IPV6 { - description - "IPv6 AFI for LDP adjancencies"; - } - } - description - "enumerated type for specifying LDP AFIs"; - } - - // grouping statements - - grouping ldp-global { - description - "Global LDP signaling configuration"; - - container ldp { - description - "LDP global signaling configuration"; - - container global { - description - "Platform wide LDP configuration and state"; - - uses mpls-ldp-global; - uses mpls-ldp-graceful-restart; - uses mpls-ldp-authentication-top; - } - - uses mpls-ldp-interface-attributes-top; - uses mpls-ldp-targeted-top; - uses mpls-ldp-neighbors-top; - - } - } - - grouping mpls-ldp-authentication-top { - description - "Grouping containing LDP authentication attributes"; - - container authentication { - description - "Global LDP authentication"; - - container config { - description - "Configuration of LDP authentication attributes"; - uses mpls-ldp-authentication-config; - } - - container state { - config false; - description - "LDP authentication state."; - uses mpls-ldp-authentication-config; - } - } - } - - grouping mpls-ldp-neighbors-top { - description - "Global LDP neighbor attributes"; - - container neighbors { - description - "State and configuration LDP neighbors attributes"; - - list neighbor { - key "lsr-id label-space-id"; - - description - "List of LDP neighbors and their attributes."; - - leaf lsr-id { - type leafref { - path "../config/lsr-id"; - } - description - "Neighbor label switch router identifier."; - } - - leaf label-space-id { - type leafref { - path "../config/label-space-id"; - } - description - "Label space ID of the neighbor."; - } - - container config { - description - "Neighbor configuration attributes."; - uses mpls-ldp-neighbor-config; - } - - container state { - config false; - description - "Neighbor state attributes."; - uses mpls-ldp-neighbor-config; - } - - container hello-adjacencies { - config false; - description "Top container for hello adjacencies - for a given LDP neighbor."; - - list hello-adjacency { - key "remote-address local-address"; - config false; - description - "List of hello adjacencies for a given LDP - neighbor."; - - leaf remote-address { - config false; - description - "Within the LDP adjacency, this attribute - shows the neighbor address."; - type leafref { - path "../state/remote-address"; - } - } - - leaf local-address { - config false; - description - "Within the LDP adjacency, this attribute - shows the local address."; - type leafref { - path "../state/local-address"; - } - } - - container state { - description - "State information for a particular LDP - hello adjacency."; - uses mpls-ldp-adjacency-state; - } - - uses oc-if:interface-ref-state; - - container hello-holdtime { - - description - "Specifies the time the sending LSR will - maintain its record of Hellos from the - receiving LSR"; - - container state { - description - "State attributes related to the - hello-holdtime."; - config false; - uses mpls-ldp-hello-holdtime-state; - } - } - - } - } - - uses mpls-ldp-authentication-top; - - } - } - } - - grouping mpls-ldp-neighbor-config { - description - "Global configuration for LDP neighbors."; - - leaf lsr-id { - type oc-inet:ip-address; - description - "Neighbor label switch router identifier."; - } - - leaf label-space-id { - type uint16; - description - "Label space ID of the neighbor."; - } - - } - - grouping mpls-ldp-adjacency-state { - - description - "Set of LDP neighbor related state attributes."; - - leaf remote-address { - description - "Within the LDP adjacency, this attribute - shows the neighbor address."; - type oc-inet:ip-address; - } - - leaf local-address { - description - "Within the LDP adjacency, this attribute - shows the local address."; - type oc-inet:ip-address; - } - - leaf adjacency-type { - description - "This attributes defines if the LDP - adjacency is from a direct link or from - targeted discovery."; - type oc-ldp:mpls-ldp-adjacency-type; - } - - leaf last-clear { - type oc-types:timeticks64; - description - "Timestamp of the last time the interface counters - were cleared. The value is the timestamp in - nanoseconds relative to the Unix Epoch (Jan 1, - 1970 00:00:00 UTC)."; - } - - leaf hello-received { - type oc-yang:counter64; - description - "Number of Hello messaged received by the device"; - } - - leaf hello-dropped { - type oc-yang:counter64; - description - "Number of Hello messaged dropped by the device"; - } - - } - - grouping mpls-ldp-hello-holdtime-state { - description - "Grouping containing the state attributes - for hello holdtime."; - - leaf adjacent { - description - "Hello holdtime attribute learned from the - LDP neighbor"; - type uint16; - } - - leaf negotiated { - description - "Hello holdtime attribute negotiated between - the LDP neighbor and the local router."; - type uint16; - } - - leaf hello-expiration { - description - "Expiration time for the hello holdtime."; - type oc-types:timeticks64; - } - - leaf next-hello { - description - "Time when the next LDP hello will be sent to - the adjacent neighbor."; - type oc-types:timeticks64; - } - - } - - grouping mpls-ldp-global { - description - "Global LDP attributes"; - - container config { - description - "Global LDP configuration attributes."; - uses mpls-ldp-global-config; - } - - container state { - config false; - description - "Global LDP state information."; - uses mpls-ldp-global-config; - } - } - - grouping mpls-ldp-global-config { - description - "Grouping containing platform wide LDP information"; - - leaf lsr-id { - type oc-inet:ip-address; - description - "Global label switch router identifier - configuration."; - reference "RFC5036 LDP Specification"; - } - - } - - grouping mpls-ldp-interface-attributes-top { - description - "Top-level structure grouping for interface - attributes"; - - container interface-attributes { - description - "Container including attributes for LDP-enabled - interfaces"; - - container config { - description - "Configuration of per-interface LDP parameters"; - uses mpls-ldp-hello-timers-top-config; - } - - container state { - config false; - description - "Per-interface LDP protocol and state information"; - uses mpls-ldp-hello-timers-top-config; - } - - container interfaces { - description - "Container aggregating all interfaces and their - LDP-specific attributes."; - - list interface { - key "interface-id"; - description - "list of per-interface LDP configurations"; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "reference to the interface-id data"; - } - - container config { - description - "Configuration of per-interface LDP parameters"; - uses mpls-ldp-interfaces-config; - uses mpls-ldp-hello-timers-top-config; - } - - container state { - config false; - description - "Per-interface LDP protocol and state information"; - - uses mpls-ldp-interfaces-config; - uses mpls-ldp-hello-timers-top-config; - - container counters { - config false; - description - "Interface specific LDP statistics and counters"; - } - } - - uses oc-if:interface-ref; - uses mpls-ldp-address-families-ldp-top; - - } - } - } - } - - grouping mpls-ldp-address-families-ldp-top { - description - "Grouping containing the state and configuration - attributes for adress families."; - - container address-families { - description - "Top container comprising the adress families - attributes"; - list address-family { - key "afi-name"; - description - "List for attributes related to address-families for LDP."; - - leaf afi-name { - type leafref { - path "../config/afi-name"; - } - description - "Adress-family name atttibute (IPv4, IPv6)."; - } - - container config { - description - "Configuration attributes related to address-families - for LDP."; - uses mpls-ldp-address-family-config; - uses admin-config; - } - - container state { - description - "State attributes related to address-families for LDP."; - config false; - uses mpls-ldp-address-family-config; - uses admin-config; - } - } - } - } - - grouping mpls-ldp-hello-timers-top-config { - - description - "Grouping containing interface-related attributes - that can be configured for LDP."; - - leaf hello-holdtime { - type uint16; - description - "Defines the time for which a neighbor adjacency will - be kept by the router while it waits for a new link - Hello message."; - reference "RFC5036 LDP Specification"; - } - - leaf hello-interval { - type uint16; - description - "Defines the interval for sending Hello messages on - each link LDP adjacency."; - } - - } - - grouping mpls-ldp-targeted-top { - - description - "Grouping containing attributes for targeted LDP"; - - container targeted { - description - "Top container for targeted LDP state and configuration - attributes."; - - container config { - description - "Configuration attributes related to targeted LDP."; - uses mpls-ldp-targeted-attributes-top-config; - } - - container state { - config false; - description - "State attributes related to targeted LDP."; - uses mpls-ldp-targeted-attributes-top-config; - } - - uses mpls-ldp-address-targeted-ldp-top; - } - } - - grouping mpls-ldp-address-targeted-ldp-top { - description - "Grouping containing address attributes for targeted LDP."; - - container address-families { - description - "Global container for IPv4 and IPv6 attributes for LDP."; - - list address-family { - key "afi-name"; - description - "List of address families for targeted LDP - configuration"; - - leaf afi-name { - type leafref { - path "../config/afi-name"; - } - description - "Adress-family name atttibute (IPv4, IPv6)."; - } - - container config { - description - "Address-family configuration for targeted LDP"; - uses mpls-ldp-address-family-config; - } - - container state { - config false; - description - "Address-family state for targeted LDP"; - uses mpls-ldp-address-family-config; - } - - container targets { - description - "Container aggregating all targeted sessions and - their LDP-specific attributes."; - - list target { - key "remote-address"; - - description - "List of LDP targets configuration"; - - leaf remote-address { - type leafref { - path "../config/remote-address"; - } - description - "Neighbor address of the targeted LDP session"; - } - - container config { - - description - "Configuration parameters of a targeted LDP - adjacency"; - - leaf remote-address { - type oc-inet:ip-address; - description - "Configuration of neighbor address of the - targeted LDP adjacency"; - } - - leaf local-address { - type oc-inet:ip-address; - description - "Local IP address of the LDP adjacency"; - } - - uses admin-config; - uses mpls-ldp-hello-timers-top-config; - } - - container state { - config false; - description - "State attributes of a targeted LDP adjacency"; - - leaf remote-address { - config false; - type oc-inet:ip-address; - description - "Neighbor address of the targeted LDP adjacency"; - } - - leaf local-address { - config false; - type oc-inet:ip-address; - description - "Local IP address of the LDP adjacency"; - } - - uses admin-config; - uses mpls-ldp-hello-timers-top-config; - } - } - } - } - } - } - - grouping mpls-ldp-address-family-config { - description - "Grouping containing adress-family name atttibute"; - - leaf afi-name { - description - "Adress-family name atttibute (IPv4, IPv6)."; - type oc-ldp:mpls-ldp-afi; - } - - } - - grouping mpls-ldp-targeted-attributes-top-config { - - description - "Grouping containing targeted LDP configuration - attributes."; - - uses mpls-ldp-hello-timers-top-config; - - leaf hello-accept { - type boolean; - description - "Enables or disables the acceptance of targeted LDP - hello messages."; - reference "RFC5036 LDP Specification"; - } - - } - - grouping mpls-ldp-interfaces-config { - description - "LDP configuration information relevant to an interface"; - - leaf interface-id { - type oc-if:interface-id; - description - "Identifier for the interface"; - } - } - - grouping mpls-ldp-graceful-restart { - description - "Attributes relating to LDP Graceful-Restart"; - - container graceful-restart { - description - "Top container for LDP graceful-restart attributes"; - - container config { - description - "LDP graceful-restart configuration attributes."; - uses mpls-ldp-graceful-restart-config; - } - - container state { - config false; - description - "LDP graceful-restart state attributes."; - uses mpls-ldp-graceful-restart-config; - } - } - } - - grouping mpls-ldp-graceful-restart-config { - description - "Configuration parameters relating to LDP Graceful-Restart"; - - uses admin-config; - - leaf reconnect-time { - type uint16; - description - "Interval for which the remote LDP peers - will wait for the local node to reconnect after a - failure"; - reference "RFC3478 Graceful Restart Mechanism for Label - Distribution Protocol"; - } - - leaf recovery-time { - type uint16; - description - "Interval used to specify the time for the remote - peer to maintain the MPLS forwarding state after - the local node has succesfully reconnected"; - reference "RFC3478 Graceful Restart Mechanism for Label - Distribution Protocol"; - } - - leaf forwarding-holdtime { - type uint16; - description - "Time that defines the interval for keeping the - node in recovery mode."; - reference "RFC3478 Graceful Restart Mechanism for Label - Distribution Protocol"; - } - - leaf helper-enable { - type boolean; - description - "Enables the graceful restart helper for LDP."; - } - } - - grouping igp-tunnel-ldp { - description - "common defintiions for LDP-signaled LSP tunnel - types"; - } - - grouping igp-lsp-ldp-setup { - description - "grouping for LDP setup attributes"; - - container ldp { - description - "LDP signaling setup for IGP-congruent LSPs"; - uses igp-tunnel-ldp; - } - } - - grouping mpls-ldp-authentication-config { - description - "LDP authentication parameters container."; - - leaf enable { - type boolean; - default false; - description - "Enables LDP authentication on the node."; - } - - leaf authentication-key { - type oc-types:routing-password; - description - "authenticate LDP signaling - messages"; - reference - "RFC1321 The MD5 Message-Digest Algorithm - RFC5036 LDP Specification"; - } - } - - grouping admin-config { - description - "Re-usable grouping to enable or disable a particular LDP feature."; - - leaf enabled { - type boolean; - default false; - description - "When set to true, the functionality within which this leaf is - defined is enabled, when set to false it is explicitly disabled."; - } - } - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-mpls-rsvp.yang b/src/plugins/yang/openconfig/openconfig-mpls-rsvp.yang deleted file mode 100644 index 6b6f4ac..0000000 --- a/src/plugins/yang/openconfig/openconfig-mpls-rsvp.yang +++ /dev/null @@ -1,1446 +0,0 @@ -module openconfig-mpls-rsvp { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/rsvp"; - - prefix "oc-rsvp"; - - // import some basic types - import openconfig-inet-types { prefix inet; } - import openconfig-mpls-types { prefix oc-mplst; } - import openconfig-yang-types { prefix yang; } - import openconfig-types { prefix oc-types; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-interfaces { prefix oc-if; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Configuration for RSVP-TE signaling, including global protocol - parameters and LSP-specific configuration for constrained-path - LSPs"; - - oc-ext:openconfig-version "3.0.0"; - - revision "2018-07-02" { - description - "Add new RSVP-TE statistics, remove associated-rsvp-session - leaf. Remove use of date-and-time."; - reference "3.0.0"; - } - - revision "2018-06-16" { - description - "Included attributes for base LDP configuration."; - reference "2.6.0"; - } - - revision "2018-06-13" { - description - "Add ttl-propagation to global MPLS config"; - reference "2.5.0"; - } - - revision "2018-06-05" { - description - "Fixed bugs in when statements on RSVP-TE attributes"; - reference "2.4.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "2.4.1"; - } - - revision "2017-06-21" { - description - "Add TC bits typedef."; - reference "2.4.0"; - } - - revision "2017-03-22" { - description - "Add RSVP calculated-absolute-subscription-bw"; - reference "2.3.0"; - } - - revision "2017-01-26" { - description - "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; - reference "2.2.0"; - } - - revision "2016-12-15" { - description - "Add additional MPLS parameters"; - reference "2.1.0"; - } - - revision "2016-09-01" { - description - "Revisions based on implementation feedback"; - reference "2.0.0"; - } - - revision "2016-08-08" { - description - "Public release of MPLS models"; - reference "1.0.1"; - } - - // grouping statements - - grouping mpls-rsvp-soft-preemption-config { - description - "Configuration for MPLS soft preemption"; - leaf enable { - type boolean; - default false; - description - "Enables soft preemption on a node."; - } - - leaf soft-preemption-timeout { - type uint16 { - range 0..max; - } - default 30; - description - "Timeout value for soft preemption to revert - to hard preemption. The default timeout for - soft-preemption is 30 seconds - after which - the local system reverts to hard pre-emption."; - reference "RFC5712 MPLS-TE soft preemption"; - } - } - - grouping mpls-rsvp-soft-preemption { - description - "Top level group for MPLS soft preemption"; - container soft-preemption { - description - "Protocol options relating to RSVP - soft preemption"; - container config { - description - "Configuration parameters relating to RSVP - soft preemption support"; - uses mpls-rsvp-soft-preemption-config; - } - container state { - config false; - description - "State parameters relating to RSVP - soft preemption support"; - uses mpls-rsvp-soft-preemption-config; - } - } - } - - grouping mpls-rsvp-hellos-config { - description - "RSVP protocol options configuration."; - - leaf hello-interval { - type uint16 { - range 1000..60000; - } - units milliseconds; - default 9000; - description - "set the interval in ms between RSVP hello - messages"; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for - LSP Tunnels. - RFC 5495: Description of the Resource - Reservation Protocol - Traffic-Engineered - (RSVP-TE) Graceful Restart Procedures"; - } - - leaf refresh-reduction { - type boolean; - default true; - description - "enables all RSVP refresh reduction message - bundling, RSVP message ID, reliable message delivery - and summary refresh"; - reference - "RFC 2961 RSVP Refresh Overhead Reduction - Extensions"; - } - } - - grouping mpls-rsvp-hellos { - description - "Top level grouping for RSVP hellos parameters"; - // TODO: confirm that the described semantics are supported - // on various implementations. Finer grain configuration - // will be vendor-specific - - container hellos { - description - "Top level container for RSVP hello parameters"; - - container config { - description - "Configuration parameters relating to RSVP - hellos"; - uses mpls-rsvp-hellos-config; - } - container state { - config false; - description - "State information associated with RSVP hellos"; - uses mpls-rsvp-hellos-config; - } - } - } - - grouping mpls-rsvp-subscription-config { - description - "RSVP subscription configuration"; - - leaf subscription { - type oc-types:percentage; - description - "percentage of the interface bandwidth that - RSVP can reserve"; - } - } - - grouping mpls-rsvp-subscription-state { - description - "Operational state parameters relating to the - bandwidth subscription on an interface"; - - leaf calculated-absolute-subscription-bw { - type uint64; - units "kbps"; - description - "The calculated absolute value of the bandwidth - which is reservable to RSVP-TE on the interface - prior to any adjustments that may be made from - external sources."; - } - } - - grouping mpls-rsvp-subscription { - description - "Top level group for RSVP subscription options"; - - container subscription { - description - "Bandwidth percentage reservable by RSVP - on an interface"; - - container config { - description - "Configuration parameters relating to RSVP - subscription options"; - uses mpls-rsvp-subscription-config; - } - - container state { - config false; - description - "State parameters relating to RSVP - subscription options"; - uses mpls-rsvp-subscription-config; - uses mpls-rsvp-subscription-state; - } - } - } - - grouping mpls-rsvp-graceful-restart-config { - description - "Configuration parameters relating to RSVP Graceful-Restart"; - - leaf enable { - type boolean; - default false; - description - "Enables graceful restart on the node."; - } - - leaf restart-time { - type uint32; - description - "Graceful restart time (seconds)."; - reference - "RFC 5495: Description of the Resource - Reservation Protocol - Traffic-Engineered - (RSVP-TE) Graceful Restart Procedures"; - } - leaf recovery-time { - type uint32; - description - "RSVP state recovery time"; - } - } - - grouping mpls-rsvp-graceful-restart { - description - "Top level group for RSVP graceful-restart - parameters"; - - container graceful-restart { - description - "Operational state and configuration parameters relating to - graceful-restart for RSVP"; - - container config { - description - "Configuration parameters relating to - graceful-restart"; - uses mpls-rsvp-graceful-restart-config; - } - - container state { - config false; - description - "State information associated with - RSVP graceful-restart"; - uses mpls-rsvp-graceful-restart-config; - } - } - } - - grouping mpls-rsvp-authentication-config { - description - "RSVP authentication parameters container."; - - leaf enable { - type boolean; - default false; - description - "Enables RSVP authentication on the node."; - } - - leaf authentication-key { - type string { - // Juniper supports 1..16 while - // Cisco has a much bigger range, up to 60. - length "1..32"; - } - description - "authenticate RSVP signaling - messages"; - reference - "RFC 2747: RSVP Cryptographic Authentication"; - } - } - - grouping mpls-rsvp-authentication { - description - "Top level group for RSVP authentication, - as per RFC2747"; - - container authentication { - description - "Configuration and state parameters relating to RSVP - authentication as per RFC2747"; - - container config { - description - "Configuration parameters relating - to authentication"; - uses mpls-rsvp-authentication-config; - } - - container state { - config false; - description - "State information associated - with authentication"; - uses mpls-rsvp-authentication-config; - } - } - } - - grouping mpls-rsvp-protection-config { - description - "RSVP facility (link/node) protection configuration"; - - leaf link-protection-style-requested { - type identityref { - base oc-mplst:PROTECTION_TYPE; - } - default oc-mplst:LINK_NODE_PROTECTION_REQUESTED; - description - "Style of mpls frr protection desired: - link, link-node, or unprotected"; - } - - leaf bypass-optimize-interval { - type uint16; - units seconds; - description - "interval between periodic optimization - of the bypass LSPs"; - // note: this is interface specific on juniper - // on iox, this is global. need to resolve. - } - // to be completed, things like enabling link protection, - // optimization times, etc. - } - - grouping mpls-rsvp-link-protection { - description - "Top level group for RSVP protection"; - container protection { - description - "link-protection (NHOP) related configuration"; - - container config { - description - "Configuration for link-protection"; - uses mpls-rsvp-protection-config; - } - - container state { - config false; - description - "State for link-protection"; - uses mpls-rsvp-protection-config; - } - } - } - - grouping mpls-rsvp-statistics { - description - "Top level grouping for RSVP protocol state"; - - uses mpls-rsvp-protocol-state; - } - - grouping rsvp-global { - description - "Global RSVP protocol configuration"; - container rsvp-te { - description - "RSVP-TE global signaling protocol configuration"; - - uses mpls-rsvp-session-state; - - container neighbors { - description - "Configuration and state for RSVP neighbors connecting - to the device"; - - list neighbor { - key "address"; - - config false; - - description - "List of RSVP neighbors of the local system"; - - leaf address { - type leafref { - path "../state/address"; - } - description - "Reference to the address of the RSVP neighbor"; - } - - container state { - config false; - description - "Operational state parameters relating to the - RSVP neighbor"; - uses mpls-rsvp-neighbor-state; - } - } - } - - container global { - description - "Platform wide RSVP configuration and state"; - uses mpls-rsvp-graceful-restart; - uses mpls-rsvp-soft-preemption; - uses mpls-rsvp-hellos; - - container state { - config false; - description - "Platform wide RSVP state, including counters"; - // TODO - reconcile global and per-interface - // protocol-related statistics - - container counters { - config false; - description - "Platform wide RSVP statistics and counters"; - uses mpls-rsvp-global-protocol-state; - uses mpls-rsvp-statistics; - - container errors { - description - "Error counters associated with the global RSVP-TE - instance."; - uses mpls-rsvp-error-counters; - } - } - } - } - - container interface-attributes { - description - "Attributes relating to RSVP-TE enabled interfaces"; - - list interface { - key "interface-id"; - description - "list of per-interface RSVP configurations"; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "reference to the interface-id data"; - } - - - container config { - description - "Configuration of per-interface RSVP parameters"; - uses mpls-rsvp-interfaces-config; - } - - container state { - config false; - description - "Per-interface RSVP protocol and state information"; - - uses mpls-rsvp-interfaces-state; - uses mpls-rsvp-interfaces-config; - - container counters { - config false; - description - "Interface specific RSVP statistics and counters"; - uses mpls-rsvp-protocol-state; - uses mpls-rsvp-rate-limited-messages-state; - - container errors { - description - "Interface specific RSVP error counters"; - uses mpls-rsvp-error-counters; - } - } - } - - uses oc-if:interface-ref; - uses mpls-rsvp-interface-reservations; - uses mpls-rsvp-hellos; - uses mpls-rsvp-authentication; - uses mpls-rsvp-subscription; - uses mpls-rsvp-link-protection; - } - } - } - } - - grouping rsvp-p2p-tunnel-attributes-config { - description - "properties of RSVP point-to-point paths"; - - leaf source { - when "../signaling-protocol = 'PATH_SETUP_RSVP'" { - description - "When the signaling protocol is RSVP-TE "; - } - type inet:ip-address; - description - "RSVP-TE tunnel source address"; - } - - leaf soft-preemption { - when "../signaling-protocol = 'PATH_SETUP_RSVP'" { - description - "When the signaling protocol is RSVP-TE "; - } - type boolean; - default false; - description - "Enables RSVP soft-preemption on this LSP"; - } - - uses rsvp-priorities-tunnel-config; - } - - grouping rsvp-priorities-tunnel-config { - description - "Configuration paramters related to RSVP-TE priorities for - an LSP tunnel"; - - leaf setup-priority { - when "../signaling-protocol = 'PATH_SETUP_RSVP'" { - description - "When the signaling protocol is RSVP-TE "; - } - type uint8 { - range 0..7; - } - default 7; - description - "RSVP-TE preemption priority during LSP setup, lower is - higher priority; default 7 indicates that LSP will not - preempt established LSPs during setup"; - reference "RFC 3209 - RSVP-TE: Extensions to RSVP for - LSP Tunnels"; - } - - leaf hold-priority { - when "../signaling-protocol = 'PATH_SETUP_RSVP'" { - description - "When the signaling protocol is RSVP-TE "; - } - type uint8 { - range 0..7; - } - default 0; - description - "preemption priority once the LSP is established, - lower is higher priority; default 0 indicates other LSPs - will not preempt the LSPs once established"; - reference "RFC 3209 - RSVP-TE: Extensions to RSVP for - LSP Tunnels"; - } - } - - grouping rsvp-priorities-path-config { - description - "Configuration paramters related to RSVP-TE priorities on - a primary/secondary path associated with an LSP."; - - leaf setup-priority { - when "../../../../../" + - "config/signaling-protocol = 'PATH_SETUP_RSVP'" { - description - "When the signaling protocol is RSVP-TE "; - } - type uint8 { - range 0..7; - } - default 7; - description - "RSVP-TE preemption priority during LSP setup, lower is - higher priority; default 7 indicates that LSP will not - preempt established LSPs during setup"; - reference "RFC 3209 - RSVP-TE: Extensions to RSVP for - LSP Tunnels"; - } - - leaf hold-priority { - when "../../../../../" + - "config/signaling-protocol = 'PATH_SETUP_RSVP'" { - description - "When the signaling protocol is RSVP-TE "; - } - type uint8 { - range 0..7; - } - default 0; - description - "preemption priority once the LSP is established, - lower is higher priority; default 0 indicates other LSPs - will not preempt the LSPs once established"; - reference "RFC 3209 - RSVP-TE: Extensions to RSVP for - LSP Tunnels"; - } - } - - grouping rsvp-p2p-path-attributes-config { - description - "properties of RSPP point-to-point paths"; - - uses rsvp-priorities-path-config; - - leaf retry-timer { - when "../../../../../" + - "config/signaling-protocol = 'PATH_SETUP_RSVP'" { - description - "When the signaling protocol is RSVP-TE "; - } - type uint16 { - range 1..600; - } - units seconds; - description - "sets the time between attempts to establish the - LSP"; - } - } - - grouping mpls-rsvp-neighbor-state { - description - "State information for RSVP neighbors"; - - leaf address { - type inet:ip-address; - description - "Address of RSVP neighbor"; - } - - leaf detected-interface { - type string; - description - "Interface where RSVP neighbor was detected"; - } - - leaf neighbor-status { - type enumeration { - enum UP { - description - "RSVP hello messages are detected from the neighbor"; - } - enum DOWN { - description - "RSVP neighbor not detected as up, due to a - communication failure or IGP notification - the neighbor is unavailable"; - } - } - description - "Enumuration of possible RSVP neighbor states"; - } - - leaf refresh-reduction { - type boolean; - description - "Suppport of neighbor for RSVP refresh reduction"; - reference - "RFC 2961 RSVP Refresh Overhead Reduction - Extensions"; - } - - } - - grouping mpls-rsvp-session-state { - description - "State information for RSVP TE sessions"; - - container sessions { - description - "Enclosing container for sessions"; - - list session { - key "local-index"; - config false; - - description - "List of RSVP sessions"; - - leaf local-index { - type leafref { - path "../state/local-index"; - } - description - "Reference to the local index for the RSVP - session"; - } - - uses mpls-rsvp-record-route-object-top; - uses mpls-rsvp-explicit-route-object-top; - - container state { - description - "Operational state parameters relating to the - RSVP session"; - - leaf local-index { - type uint64; - description - "The index used to identify the RSVP session - on the local network element. This index is - generated by the device and is unique only - to the local network element."; - } - - leaf source-address { - type inet:ip-address; - description - "Origin address of RSVP session"; - } - - leaf destination-address { - type inet:ip-address; - description - "Destination address of RSVP session"; - } - - leaf tunnel-id { - type uint16; - description - "The tunnel ID is an identifier used in the - RSVP session, which remains constant over - the life of the tunnel."; - reference "RFC 3209"; - } - - leaf lsp-id { - type uint16; - description - "The LSP ID distinguishes between two LSPs - originated from the same headend, and is - commonly used to distinguish RSVP sessions - during make before break operations."; - reference "RFC 3209"; - } - - leaf session-name { - type string; - description - "The signaled name of this RSVP session."; - } - - leaf status { - type enumeration { - enum UP { - description - "RSVP session is up"; - } - enum DOWN { - description - "RSVP session is down"; - } - } - description - "Enumeration of RSVP session states"; - } - - leaf type { - type identityref { - base oc-mplst:LSP_ROLE; - } - description - "The type/role of the RSVP session, signifing - the session's role on the current device, such as - a transit session vs. an ingress session."; - } - - leaf protection-requested { - type identityref { - base oc-mplst:PROTECTION_TYPE; - } - description - "The type of protection requested for the RSVP session"; - } - - leaf label-in { - type oc-mplst:mpls-label; - description - "Incoming MPLS label associated with this RSVP session"; - } - - leaf label-out { - type oc-mplst:mpls-label; - description - "Outgoing MPLS label associated with this RSVP session"; - } - - container sender-tspec { - description - "Operational state statistics relating to the SENDER_TSPEC - received for the RSVP session"; - - leaf rate { - type oc-types:ieeefloat32; - units "Bps"; - description - "The rate at which the head-end device generates traffic, - expressed in bytes per second."; - reference - "RFC2210: RSVP with INTSERV"; - } - - leaf size { - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The size of the token bucket that is used to determine - the rate at which the head-end device generates traffic, - expressed in bytes per second."; - reference - "RFC2210: RSVP with INTSERV"; - } - - leaf peak-data-rate { - type union { - type oc-types:ieeefloat32; - type enumeration { - enum INFINITY { - description - "The head-end device has no maximum data rate."; - } - } - } - units "bytes per second"; - description - "The maximum traffic generation rate that the head-end - device sends traffic at."; - reference - "RFC2210: RSVP with INTSERV"; - } - } - } - } - } - } //rsvp-session-state - - grouping mpls-rsvp-interfaces-config { - description - "RSVP configuration information relevant to an interface"; - - leaf interface-id { - type oc-if:interface-id; - description - "Identifier for the interface"; - } - } - - grouping mpls-rsvp-interfaces-state { - description - "RSVP state information relevant to an interface"; - - leaf max-link-bandwidth { - type oc-mplst:bandwidth-kbps; - description - "The maximum link bandwidth expressed in kilobits - per second. This value should be the same (other than - the units) as the value that is advertised into the - IGP traffic engineering database."; - } - } - - grouping mpls-rsvp-interface-reservations { - description - "Operational state related to interface bandwidth - reservations"; - - container bandwidth-reservations { - description - "Enclosing container for bandwidth reservation"; - list bandwidth-reservation { - key "priority"; - config false; - description - "Available and reserved bandwidth by priority on - the interface."; - - leaf priority { - type leafref { - path "../state/priority"; - } - description "Reference to the RSVP priority level"; - } - - container state { - description - "Operational state parameters relating to a - bandwidth reservation at a certain priority"; - - leaf priority { - type union { - type uint8 { - range 0..7; - } - type enumeration { - enum ALL { - description - "The ALL keyword represents the overall - state of the interface - i.e., the union - of all of the priority levels"; - } - } - } - description - "RSVP priority level for LSPs traversing the interface"; - } - - leaf available-bandwidth { - type oc-mplst:bandwidth-mbps; - description - "Bandwidth currently available with the priority level, - or for the entire interface when the priority is set to - ALL"; - } - - leaf reserved-bandwidth { - type oc-mplst:bandwidth-mbps; - description - "Bandwidth currently reserved within the priority level, - or the sum of all priority levels when the keyword is set - to ALL"; - } - - leaf active-reservations-count { - type yang:gauge64; - description - "Number of active RSVP reservations in the associated - priority, or the sum of all reservations when the priority - level is set to ALL"; - } - - leaf highwater-mark { - type oc-mplst:bandwidth-mbps; - description - "Maximum bandwidth reserved on the interface within the - priority, or across all priorities in the case that the - priority level is set to ALL"; - } - } - } - } - } - - grouping mpls-rsvp-global-protocol-state { - description - "RSVP protocol statistics which may not apply - on an interface, but are significant globally."; - - leaf path-timeouts { - type yang:counter64; - description - "The number of Path State Blocks (PSBs) that - have been timed out by the local system."; - } - - leaf reservation-timeouts { - type yang:counter64; - description - "The number of Reservation State Blocks (RSBs) that - have been timed out by the local system."; - } - - uses mpls-rsvp-rate-limited-messages-state; - } - - grouping mpls-rsvp-rate-limited-messages-state { - description - "Common grouping for rate limit messages"; - - leaf rate-limited-messages { - type yang:counter64; - description - "RSVP messages dropped due to rate limiting"; - } - } - - grouping mpls-rsvp-protocol-state { - description - "RSVP protocol statistics and message counters"; - - leaf in-path-messages { - type yang:counter64; - description - "Number of received RSVP Path messages"; - } - - leaf in-path-error-messages { - type yang:counter64; - description - "Number of received RSVP Path Error messages"; - } - - leaf in-path-tear-messages { - type yang:counter64; - description - "Number of received RSVP Path Tear messages"; - } - - leaf in-reservation-messages { - type yang:counter64; - description - "Number of received RSVP Resv messages"; - } - - leaf in-reservation-error-messages { - type yang:counter64; - description - "Number of received RSVP Resv Error messages"; - } - - leaf in-reservation-tear-messages { - type yang:counter64; - description - "Number of received RSVP Resv Tear messages"; - } - - leaf in-hello-messages { - type yang:counter64; - description - "Number of received RSVP hello messages"; - } - - leaf in-srefresh-messages { - type yang:counter64; - description - "Number of received RSVP summary refresh messages"; - } - - leaf in-ack-messages { - type yang:counter64; - description - "Number of received RSVP refresh reduction ack - messages"; - } - - leaf out-path-messages { - type yang:counter64; - description - "Number of sent RSVP PATH messages"; - } - - leaf out-path-error-messages { - type yang:counter64; - description - "Number of sent RSVP Path Error messages"; - } - - leaf out-path-tear-messages { - type yang:counter64; - description - "Number of sent RSVP Path Tear messages"; - } - - leaf out-reservation-messages { - type yang:counter64; - description - "Number of sent RSVP Resv messages"; - } - - leaf out-reservation-error-messages { - type yang:counter64; - description - "Number of sent RSVP Resv Error messages"; - } - - leaf out-reservation-tear-messages { - type yang:counter64; - description - "Number of sent RSVP Resv Tear messages"; - } - - leaf out-hello-messages { - type yang:counter64; - description - "Number of sent RSVP hello messages"; - } - - leaf out-srefresh-messages { - type yang:counter64; - description - "Number of sent RSVP summary refresh messages"; - } - - leaf out-ack-messages { - type yang:counter64; - description - "Number of sent RSVP refresh reduction ack messages"; - } - } - - grouping mpls-rsvp-record-route-object-top { - description - "Top-level structure grouping for list of record route - objects."; - - container record-route-objects { - description - "Enclosing container for MPLS RRO objects associated with the - traffic engineered tunnel."; - - list record-route-object { - key "index"; - config false; - - description - "Read-only list of record route objects associated with the - traffic engineered tunnel. Each entry in the list - may contain a hop IP address, MPLS label allocated - at the hop, and the flags associated with the entry."; - - leaf index { - type leafref { - path "../state/index"; - } - description - "Reference to the index of the record route object. - The index is used to indicate the ordering of hops in - the path."; - } - - container state { - config false; - - description - "Information related to RRO objects. The hop, label, and - optional flags are present for each entry in the list."; - - uses mpls-rsvp-record-route-object-state; - } - } - } - } - - grouping mpls-rsvp-record-route-object-state { - description - "Grouping to hold information relating to record route - objects relevant to a traffic engineering LSP."; - - leaf index { - type uint8; - description - "Index of object in the list. Used for ordering."; - } - - leaf address { - type inet:ip-address; - description - "IP router hop for RRO entry"; - } - - leaf reported-label { - type oc-mplst:mpls-label; - description - "Label reported for RRO hop"; - } - - leaf reported-flags { - type uint8; - description - "Subobject flags for MPLS label"; - } - } - - grouping mpls-rsvp-explicit-route-object-top { - description - "Top-level structure for explicit-route objects."; - - container explicit-route-objects { - description - "Enclosing container for MPLS ERO objects associated - with the traffic engineered tunnel."; - - list explicit-route-object { - key "index"; - - config false; - - description - "Read-only list of explicit route objects associated with the - traffic-engineered tunnel. Each entry in the list contains - a hop IP address, and the MPLS label allocated at the hop."; - - leaf index { - type leafref { - path "../state/index"; - } - description - "Reference to the index of the entry in the explicit route - object. The index is used to indicate the ordering of hops - in the path."; - } - - container state { - config false; - description - "Information related to the ERO index."; - uses mpls-rsvp-explicit-route-object-state; - } - } - } - } - - grouping mpls-rsvp-explicit-route-object-state { - description - "Grouping defining information related to an individual hop - of an ERO."; - - leaf index { - type uint64; - description - "Index of the entry in the ERO. Entries are ordered in - ascending order from the source to destination of the - LSP."; - } - - leaf loose { - type boolean; - description - "When set to true, indicates that the hop of the ERO is - a loose hop within the explicit route. If unset, indicates - that the hop must explicitly traverse the entity specified - in the ERO hop as the next-entity."; - } - - leaf type { - type enumeration { - enum IPV4 { - description - "The hop represents an IPv4 prefix."; - reference "RFC3209"; - } - enum IPV6 { - description - "The hop represents an IPv6 prefix."; - reference "RFC3209"; - } - enum ASN { - description - "The hop represents an autonomous system number."; - reference "RFC3209"; - } - enum ASN4 { - description - "The hop represents a 4-byte autonomous system number."; - } - enum LABEL { - description - "The hop represents an MPLS label."; - reference "RFC3473"; - } - enum UNNUMBERED_INTERFACE { - description - "The hop represents an unnumbered interface."; - reference "RFC3477"; - } - } - description - "The type of hop indicated by the ERO entry."; - } - - leaf ip-prefix { - type inet:ip-prefix; - description - "The IPv4 or IPv6 prefix indicated by the ERO. Specified - only when the ERO hop is an IPv4 or IPv6 prefix."; - } - - leaf asn { - type inet:as-number; - description - "The autonomous system number indicated by the ERO. Specified - only when the ERO hop is an 2 or 4-byte AS number."; - } - - leaf label { - type oc-mplst:mpls-label; - description - "The MPLS label specified in the ERO hop. Specified only when - the hop is an MPLS label."; - } - - leaf interface-id { - type uint32; - description - "The interface ID for an unnumbered interface. Specified only - when the ERO hop is a unnumbered interface."; - } - reference - "RFC3477 - Signalling Unnumbered Links in Resource - ReSerVation Protocol - Traffic Engineering (RSVP-TE)"; - - } - - grouping mpls-rsvp-error-counters { - description - "Grouping containing definitions of leaves relating to - errors in RSVP-TE. This grouping can be used in different - contexts - e.g., per-RSVP-TE protocol instance, or per- - interface such that the errors represented should - correspond to the number of errors that have occurred for - the context in which the grouping is used."; - - leaf authentication-fail { - type yang:counter64; - description - "The number of packets received that have failed RSVP-TE - authentication checks in the specified context."; - } - - leaf bad-checksum { - type yang:counter64; - description - "The number of packets received that have an incorrect RSVP-TE - checksum in the context."; - } - - leaf bad-packet-format { - type yang:counter64; - description - "The number of packets received that were dropped due to being - badly formed in the context."; - } - - leaf bad-packet-length { - type yang:counter64; - description - "The number of packets received that were dropped due to having - an invalid length specified in the context."; - } - - leaf out-of-order { - type yang:counter64; - description - "The number of messages received out of order in the context."; - } - - leaf received-nack { - type yang:counter64; - description - "The number of NACK RESV messages received in the context."; - } - - leaf transmit-failure { - type yang:counter64; - description - "The total number of packets dropped on transmit in the context."; - } - - leaf transmit-queue-full { - type yang:counter64; - description - "The number of packets dropped due to the transmit queue being - full in the context."; - } - - leaf unknown-ack { - type yang:counter64; - description - "The number of packets received containing an ACK for an unknown - message ID in the context."; - } - - leaf unknown-nack { - type yang:counter64; - description - "The number of packets received containing a NACK for an unknown - message ID in the context."; - } - } - - - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-mpls-sr.yang b/src/plugins/yang/openconfig/openconfig-mpls-sr.yang deleted file mode 100644 index 7485b2d..0000000 --- a/src/plugins/yang/openconfig/openconfig-mpls-sr.yang +++ /dev/null @@ -1,138 +0,0 @@ -module openconfig-mpls-sr { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/mpls-sr"; - - prefix "oc-mpls-sr"; - - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Configuration for MPLS with segment routing-based LSPs, - including global parameters, and LSP-specific configuration for - both constrained-path and IGP-congruent LSPs"; - - oc-ext:openconfig-version "3.0.0"; - - revision "2018-07-02" { - description - "Add new RSVP-TE statistics, remove associated-rsvp-session - leaf. Remove use of date-and-time."; - reference "3.0.0"; - } - - revision "2018-06-16" { - description - "Included attributes for base LDP configuration."; - reference "2.6.0"; - } - - revision "2018-06-13" { - description - "Add ttl-propagation to global MPLS config"; - reference "2.5.0"; - } - - revision "2018-06-05" { - description - "Fixed bugs in when statements on RSVP-TE attributes"; - reference "2.4.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "2.4.1"; - } - - revision "2017-06-21" { - description - "Add TC bits typedef."; - reference "2.4.0"; - } - - revision "2017-03-22" { - description - "Add RSVP calculated-absolute-subscription-bw"; - reference "2.3.0"; - } - - revision "2017-01-26" { - description - "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; - reference "2.2.0"; - } - - revision "2016-12-15" { - description - "Add additional MPLS parameters"; - reference "2.1.0"; - } - - revision "2016-09-01" { - description - "Revisions based on implementation feedback"; - reference "2.0.0"; - } - - revision "2016-08-08" { - description - "Public release of MPLS models"; - reference "1.0.1"; - } - - grouping sr-path-attributes-config { - description - "Configuration parameters relating to SR-TE LSPs"; - - leaf sid-selection-mode { - type enumeration { - enum ADJ_SID_ONLY { - description - "The SR-TE tunnel should only use adjacency SIDs - to build the SID stack to be pushed for the LSP"; - } - enum MIXED_MODE { - description - "The SR-TE tunnel can use a mix of adjacency - and prefix SIDs to build the SID stack to be pushed - to the LSP"; - } - } - default MIXED_MODE; - description - "The restrictions placed on the SIDs to be selected by the - calculation method for the explicit path when it is - instantiated for a SR-TE LSP"; - } - - leaf sid-protection-required { - type boolean; - default "false"; - description - "When this value is set to true, only SIDs that are - protected are to be selected by the calculating method - when the explicit path is instantiated by a SR-TE LSP."; - } - } - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-mpls-static.yang b/src/plugins/yang/openconfig/openconfig-mpls-static.yang deleted file mode 100644 index 493b5f8..0000000 --- a/src/plugins/yang/openconfig/openconfig-mpls-static.yang +++ /dev/null @@ -1,312 +0,0 @@ -submodule openconfig-mpls-static { - - yang-version "1"; - - belongs-to "openconfig-mpls" { - prefix "mpls"; - } - - // import some basic types - import openconfig-mpls-types {prefix oc-mplst; } - import openconfig-inet-types { prefix inet; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Defines static LSP configuration"; - - - oc-ext:openconfig-version "3.0.0"; - - revision "2018-07-02" { - description - "Add new RSVP-TE statistics, remove associated-rsvp-session - leaf. Remove use of date-and-time."; - reference "3.0.0"; - } - - revision "2018-06-16" { - description - "Included attributes for base LDP configuration."; - reference "2.6.0"; - } - - revision "2018-06-13" { - description - "Add ttl-propagation to global MPLS config"; - reference "2.5.0"; - } - - revision "2018-06-05" { - description - "Fixed bugs in when statements on RSVP-TE attributes"; - reference "2.4.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "2.4.1"; - } - - revision "2017-06-21" { - description - "Add TC bits typedef."; - reference "2.4.0"; - } - - revision "2017-03-22" { - description - "Add RSVP calculated-absolute-subscription-bw"; - reference "2.3.0"; - } - - revision "2017-01-26" { - description - "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; - reference "2.2.0"; - } - - revision "2016-12-15" { - description - "Add additional MPLS parameters"; - reference "2.1.0"; - } - - revision "2016-09-01" { - description - "Revisions based on implementation feedback"; - reference "2.0.0"; - } - - revision "2016-08-08" { - description - "Public release of MPLS models"; - reference "1.0.1"; - } - - // grouping statements - - grouping static-lsp-common-config { - description - "common definitions for static LSPs"; - - leaf next-hop { - type inet:ip-address; - description - "next hop IP address for the LSP"; - } - - leaf incoming-label { - type oc-mplst:mpls-label; - description - "label value on the incoming packet"; - } - - leaf push-label { - type oc-mplst:mpls-label; - description - "label value to push at the current hop for the - LSP"; - } - } - - grouping static-lsp-ingress-config { - description - "Configuration data for ingress LSPs"; - - uses static-lsp-common-config; - } - - grouping static-lsp-ingress-state { - description - "Operational state data for ingress LSPs"; - } - - grouping static-lsp-ingress-top { - description - "Top-level grouping for ingress LSP data"; - - container ingress { - description - "Static LSPs for which the router is an - ingress node"; - - container config { - description - "Configuration data for ingress LSPs"; - - uses static-lsp-ingress-config; - } - - container state { - - config false; - - description - "Operational state data for ingress LSPs"; - - uses static-lsp-ingress-config; - uses static-lsp-ingress-state; - } - } - } - - grouping static-lsp-transit-config { - description - "Configuration data for transit LSPs"; - - uses static-lsp-common-config; - } - - grouping static-lsp-transit-state { - description - "Operational state data for transit LSPs"; - } - - grouping static-lsp-transit-top { - description - "Top-level grouping for transit LSP data"; - - container transit { - description - "Static LSPs for which the router is an - transit node"; - - container config { - description - "Configuration data for transit LSPs"; - - uses static-lsp-transit-config; - } - - container state { - - config false; - - description - "Operational state data for transit LSPs"; - - uses static-lsp-transit-config; - uses static-lsp-transit-state; - } - } - } - - grouping static-lsp-egress-config { - description - "Configuration data for egress LSPs"; - - uses static-lsp-common-config; - } - - grouping static-lsp-egress-state { - description - "Operational state data for egress LSPs"; - } - - grouping static-lsp-egress-top { - description - "Top-level grouping for egress LSP data"; - - container egress { - description - "Static LSPs for which the router is an - egress node"; - - container config { - description - "Configuration data for egress LSPs"; - - uses static-lsp-egress-config; - } - - container state { - - config false; - - description - "Operational state data for egress LSPs"; - - uses static-lsp-egress-config; - uses static-lsp-egress-state; - } - } - } - - grouping static-lsp-config { - description - "Configuration data for static LSPs"; - - leaf name { - type string; - description - "name to identify the LSP"; - } - } - - grouping static-lsp-state { - description - "Operational state data for static LSPs"; - - } - - grouping static-lsp-top { - description - "grouping for top level list of static LSPs"; - - - list static-lsp { - key "name"; - description - "list of defined static LSPs"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference the name list key"; - } - - container config { - description - "Configuration data for the static lsp"; - - uses static-lsp-config; - } - - container state { - config false; - - description - "Operational state data for the static lsp"; - - uses static-lsp-config; - uses static-lsp-state; - - } - - // TODO: separation into ingress, transit, egress may help - // to figure out what exactly is configured, but need to - // consider whether implementations can support the - // separation - uses static-lsp-ingress-top; - uses static-lsp-transit-top; - uses static-lsp-egress-top; - } - } - - // data definition statements - - // augment statements - - -} diff --git a/src/plugins/yang/openconfig/openconfig-mpls-te.yang b/src/plugins/yang/openconfig/openconfig-mpls-te.yang deleted file mode 100644 index e5142f1..0000000 --- a/src/plugins/yang/openconfig/openconfig-mpls-te.yang +++ /dev/null @@ -1,1381 +0,0 @@ -submodule openconfig-mpls-te { - - yang-version "1"; - - belongs-to "openconfig-mpls" { - prefix "oc-mpls"; - } - - - // import some basic types - import openconfig-inet-types { prefix inet; } - import openconfig-mpls-rsvp { prefix oc-rsvp; } - import openconfig-mpls-sr { prefix oc-sr; } - import openconfig-mpls-types {prefix oc-mplst; } - import openconfig-types { prefix oc-types; } - import openconfig-yang-types { prefix yang; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Configuration related to constrained-path LSPs and traffic - engineering. These definitions are not specific to a particular - signaling protocol or mechanism (see related submodules for - signaling protocol-specific configuration)."; - - oc-ext:openconfig-version "3.0.0"; - - revision "2018-07-02" { - description - "Add new RSVP-TE statistics, remove associated-rsvp-session - leaf. Remove use of date-and-time."; - reference "3.0.0"; - } - - revision "2018-06-16" { - description - "Included attributes for base LDP configuration."; - reference "2.6.0"; - } - - revision "2018-06-13" { - description - "Add ttl-propagation to global MPLS config"; - reference "2.5.0"; - } - - revision "2018-06-05" { - description - "Fixed bugs in when statements on RSVP-TE attributes"; - reference "2.4.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "2.4.1"; - } - - revision "2017-06-21" { - description - "Add TC bits typedef."; - reference "2.4.0"; - } - - revision "2017-03-22" { - description - "Add RSVP calculated-absolute-subscription-bw"; - reference "2.3.0"; - } - - revision "2017-01-26" { - description - "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; - reference "2.2.0"; - } - - revision "2016-12-15" { - description - "Add additional MPLS parameters"; - reference "2.1.0"; - } - - revision "2016-09-01" { - description - "Revisions based on implementation feedback"; - reference "2.0.0"; - } - - revision "2016-08-08" { - description - "Public release of MPLS models"; - reference "1.0.1"; - } - - // typedef statements - - typedef te-bandwidth-type { - type enumeration { - enum SPECIFIED { - description - "Bandwidth is explicitly specified"; - } - enum AUTO { - description - "Bandwidth is automatically computed"; - } - } - description - "enumerated type for specifying whether bandwidth is - explicitly specified or automatically computed"; - } - - typedef mpls-srlg-flooding-type { - type enumeration { - enum FLOODED_SRLG { - description - "SRLG is flooded in the IGP"; - } - enum STATIC_SRLG { - description - "SRLG is not flooded, the members are - statically configured"; - } - } - description - "Enumerated bype for specifying how the SRLG is flooded"; - } - - typedef mpls-hop-type { - type enumeration { - enum LOOSE { - description - "loose hop in an explicit path"; - } - enum STRICT { - description - "strict hop in an explicit path"; - } - } - description - "enumerated type for specifying loose or strict - paths"; - } - - typedef te-metric-type { - type union { - type enumeration { - enum IGP { - description - "set the LSP metric to track the underlying - IGP metric"; - } - } - type uint32; - } - description - "union type for setting the LSP TE metric to a - static value, or to track the IGP metric"; - } - - typedef cspf-tie-breaking { - type enumeration { - enum RANDOM { - description - "CSPF calculation selects a random path among - multiple equal-cost paths to the destination"; - } - enum LEAST_FILL { - description - "CSPF calculation selects the path with greatest - available bandwidth"; - } - enum MOST_FILL { - description - "CSPF calculation selects the path with the least - available bandwidth"; - } - } - default RANDOM; - description - "type to indicate the CSPF selection policy when - multiple equal cost paths are available"; - } - - - // grouping statements - - grouping te-tunnel-reoptimize-config { - description - "Definition for reoptimize timer configuration"; - - leaf reoptimize-timer { - type uint16; - units seconds; - description - "frequency of reoptimization of - a traffic engineered LSP"; - } - } - - grouping te-lsp-auto-bandwidth-config { - description - "Configuration parameters related to autobandwidth"; - - leaf enabled { - type boolean; - default false; - description - "enables mpls auto-bandwidth on the - lsp"; - } - - leaf min-bw { - type oc-mplst:bandwidth-kbps; - description - "set the minimum bandwidth in Kbps for an - auto-bandwidth LSP"; - } - - leaf max-bw { - type oc-mplst:bandwidth-kbps; - description - "set the maximum bandwidth in Kbps for an - auto-bandwidth LSP"; - } - - leaf adjust-interval { - type uint32; - description - "time in seconds between adjustments to - LSP bandwidth"; - } - - leaf adjust-threshold { - type oc-types:percentage; - description - "percentage difference between the LSP's - specified bandwidth and its current bandwidth - allocation -- if the difference is greater than the - specified percentage, auto-bandwidth adjustment is - triggered"; - } - } - - grouping te-lsp-auto-bandwidth-state { - description - "Operational state parameters relating to auto-bandwidth"; - - leaf interval-high-bw { - type oc-mplst:bandwidth-kbps; - description - "The maximum measured bandwidth during the current - auto-bandwidth adjust interval expressed in kilobits - per second."; - } - } - - grouping te-lsp-overflow-config { - description - "configuration for mpls lsp bandwidth - overflow adjustment"; - - leaf enabled { - type boolean; - default false; - description - "enables mpls lsp bandwidth overflow - adjustment on the lsp"; - } - - leaf overflow-threshold { - type oc-types:percentage; - description - "bandwidth percentage change to trigger - an overflow event"; - - } - - leaf trigger-event-count { - type uint16; - description - "number of consecutive overflow sample - events needed to trigger an overflow adjustment"; - } - } - - grouping te-lsp-underflow-config { - description - "configuration for mpls lsp bandwidth - underflow adjustment"; - - leaf enabled { - type boolean; - default false; - description - "enables bandwidth underflow - adjustment on the lsp"; - } - - leaf underflow-threshold { - type oc-types:percentage; - description - "bandwidth percentage change to trigger - and underflow event"; - } - - leaf trigger-event-count { - type uint16; - description - "number of consecutive underflow sample - events needed to trigger an underflow adjustment"; - } - } - - grouping te-path-placement-constraints-config { - description - "Configuration data for link affinities"; - - leaf-list exclude-group { - type leafref { - path "../../../../../../../../../../te-global-attributes" + - "/mpls-admin-groups/admin-group/admin-group-name"; - } - description - "list of references to named admin-groups to exclude in - path calculation."; - } - - leaf-list include-all-group { - type leafref { - path "../../../../../../../../../../te-global-attributes" + - "/mpls-admin-groups/admin-group/admin-group-name"; - } - description - "list of references to named admin-groups of which all must - be included"; - } - - leaf-list include-any-group { - type leafref { - path "../../../../../../../../../../te-global-attributes" + - "/mpls-admin-groups/admin-group/admin-group-name"; - } - description - "list of references to named admin-groups of which one must - be included"; - } - } - - grouping te-path-placement-constraints-state { - description - "Operational state data for link affinities"; - //TODO: currently a placeholder - } - - grouping te-path-placement-constraints-top { - description - "Top-level grouping "; - - container admin-groups { - description - "Top-level container for include/exclude constraints for - link affinities"; - - container config { - description - "Configuration data "; - - uses te-path-placement-constraints-config; - } - - container state { - config false; - - description - "Operational state data "; - - uses te-path-placement-constraints-config; - uses te-path-placement-constraints-state; - } - } - } - - grouping te-tunnel-protection-config { - description - "Configuration parameters related to LSP - protection"; - leaf protection-style-requested { - type identityref { - base oc-mplst:PROTECTION_TYPE; - } - default oc-mplst:UNPROTECTED; - description - "style of mpls frr protection desired: can be - link, link-node or unprotected."; - } - } - - grouping explicit-route-subobject-config { - description - "The explicit route subobject grouping"; - - leaf address { - type inet:ip-address; - description - "router hop for the LSP path"; - } - - leaf hop-type { - type mpls-hop-type; - description - "strict or loose hop"; - } - - leaf index { - type uint8 { - range "0..255"; - } - description - "Index of this explicit route object to express - the order of hops in the path"; - } - - } - - grouping named-explicit-path-config { - description - "Configuration parameters relating to a named - explicit path"; - - leaf name { - type string; - description - "A string name that uniquely identifies an explicit - path"; - } - } - - // Explicit paths config somewhat following the IETF model - grouping explicit-paths-top { - description - "Top level global explicit path configuration - grouping"; - - container named-explicit-paths { - description - "Enclosing container for the named explicit paths"; - list named-explicit-path { - key "name"; - description - "A list of explicit paths"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "A string name that uniquely identifies - an explicit path"; - } - - container config { - description - "Configuration parameters relating to named explicit - paths"; - uses named-explicit-path-config; - uses oc-sr:sr-path-attributes-config; - } - - container state { - config false; - description - "Operational state parameters relating to the named - explicit paths"; - uses named-explicit-path-config; - uses oc-sr:sr-path-attributes-config; - } - - container explicit-route-objects { - description - "Enclosing container for EROs"; - - list explicit-route-object { - key "index"; - description - "List of explicit route objects"; - - leaf index { - type leafref { - path "../config/index"; - } - - description - "Index of this explicit route object, - to express the order of hops in path"; - } - - container config { - description - "Configuration parameters relating to an explicit - route"; - uses explicit-route-subobject-config; - } - - - container state { - config false; - description - "State parameters relating to an explicit route"; - uses explicit-route-subobject-config; - } - } - } - } - } - } - - grouping mpls-te-srlg-config { - description - "Configuration of various attributes associated - with the SRLG"; - - leaf name { - type string; - description - "SRLG group identifier"; - } - - leaf value { - type uint32; - description - "group ID for the SRLG"; - } - - leaf cost { - type uint32; - description - "The cost of the SRLG to the computation - algorithm"; - } - - leaf flooding-type { - type mpls-srlg-flooding-type; - default FLOODED_SRLG; - description - "The type of SRLG, either flooded in the IGP or - statically configured"; - } - } - - grouping mpls-te-srlg-members-config { - description - "Configuration of the membership of the SRLG"; - - leaf from-address { - type inet:ip-address; - description - "IP address of the a-side of the SRLG link"; - } - - leaf to-address { - type inet:ip-address; - description - "IP address of the z-side of the SRLG link"; - } - } - - grouping mpls-te-srlg-top { - description - "Top level grouping for MPLS shared - risk link groups."; - - container srlgs { - description - "Shared risk link groups attributes"; - list srlg { - key "name"; - description - "List of shared risk link groups"; - - leaf name { - type leafref { - path "../config/name"; - // Requires YANG 1.1 - //require-instance true; - } - description - "The SRLG group identifier"; - } - - container config { - description - "Configuration parameters related to the SRLG"; - uses mpls-te-srlg-config; - } - - container state { - config false; - description - "State parameters related to the SRLG"; - uses mpls-te-srlg-config; - } - - container static-srlg-members { - when "../config/flooding-type = 'STATIC_SRLG'" { - description - "Include this container for static - SRLG specific configuration"; - } - description - "SRLG members for static (not flooded) SRLGs "; - - list members-list { - key "from-address"; - description - "List of SRLG members, which are expressed - as IP address endpoints of links contained in the - SRLG"; - - leaf from-address { - type leafref { - path "../config/from-address"; - // Requires YANG 1.1 - //require-instance true; - } - description - "The from address of the link in the SRLG"; - } - - container config { - description - "Configuration parameters relating to the - SRLG members"; - uses mpls-te-srlg-members-config; - } - - container state { - config false; - description - "State parameters relating to the SRLG - members"; - uses mpls-te-srlg-members-config; - } - } - } - } - } - } - - grouping te-global-tunnel-config { - description - "Configuration parameters relevant to a single - traffic engineered tunnel."; - - leaf name { - type string; - description - "The tunnel name"; - } - - leaf type { - type identityref { - base oc-mplst:TUNNEL_TYPE; - } - description - "Tunnel type, p2p or p2mp"; - } - - leaf signaling-protocol { - type identityref { - base oc-mplst:PATH_SETUP_PROTOCOL; - } - description - "Signaling protocol used to set up this tunnel"; - } - - leaf description { - type string; - description - "optional text description for the tunnel"; - } - - leaf admin-status { - type identityref { - base oc-mplst:TUNNEL_ADMIN_STATUS; - } - default oc-mplst:ADMIN_UP; - description - "TE tunnel administrative state."; - } - - leaf preference { - type uint8 { - range "1..255"; - } - description - "Specifies a preference for this tunnel. - A lower number signifies a better preference"; - } - - leaf metric-type { - type identityref { - base oc-mplst:LSP_METRIC_TYPE; - } - default oc-mplst:LSP_METRIC_INHERITED; - description - "The type of metric specification that should be used to set - the LSP(s) metric"; - } - - leaf metric { - type int32; - description - "The value of the metric that should be specified. The value - supplied in this leaf is used in conjunction with the metric - type to determine the value of the metric used by the system. - Where the metric-type is set to LSP_METRIC_ABSOLUTE - the - value of this leaf is used directly; where it is set to - LSP_METRIC_RELATIVE, the relevant (positive or negative) - offset is used to formulate the metric; where metric-type - is LSP_METRIC_INHERITED, the value of this leaf is not - utilised"; - } - - leaf shortcut-eligible { - type boolean; - default "true"; - description - "Whether this LSP is considered to be eligible for us as a - shortcut in the IGP. In the case that this leaf is set to - true, the IGP SPF calculation uses the metric specified to - determine whether traffic should be carried over this LSP"; - } - - leaf protection-style-requested { - type identityref { - base oc-mplst:PROTECTION_TYPE; - } - default oc-mplst:UNPROTECTED; - description - "style of mpls frr protection desired: can be - link, link-node or unprotected."; - } - - uses te-tunnel-reoptimize-config; - uses oc-rsvp:rsvp-p2p-tunnel-attributes-config; - - } - - grouping tunnel-p2p-attributes-config { - description - "Configuration related to p2p LSPs"; - leaf destination { - type inet:ip-address; - description - "P2P tunnel destination address"; - } - } - - grouping p2p-path-state { - description - "Operational state parameters for p2p paths"; - - leaf-list associated-rsvp-sessions { - type leafref { - path "../../../../../../../../../signaling-protocols/" + - "rsvp-te/sessions/session/local-index"; - } - description - "If the signalling protocol specified for this path is - RSVP-TE, this leaf-list provides a reference to the associated - sessions within the RSVP-TE protocol sessions list, such - that details of the signaling can be retrieved. More than - one session may exist during re-signalling such as - make-before-break."; - } - - leaf spf-metric { - type uint64; - description - "The IGP metric of the shortest path to the LSP destination. - This value is used to compare the current metric of the - constrained path to the shortest path that is available in - the network topology."; - } - - leaf cspf-metric { - type uint64; - description - "The IGP metric of the path currently used by the LSP. - This value is used to represent the metric of the path - used by the LSP following the execution of the CSPF - algorithm and signalling of the LSP."; - } - } - - grouping p2p-path-config { - description - "Configuration parameters for p2p paths"; - - leaf name { - type string; - description - "Path name"; - } - - leaf path-computation-method { - type identityref { - base oc-mplst:PATH_COMPUTATION_METHOD; - } - default oc-mplst:LOCALLY_COMPUTED; - description - "The method used for computing the path, either - locally computed, queried from a server or not - computed at all (explicitly configured)."; - } - - leaf use-cspf { - when "../path-computation-method = 'LOCALLY_COMPUTED'" { - description - "The use of cspf when the path-computation method is - local computation"; - } - type boolean; - description - "Flag to enable CSPF for locally computed LSPs"; - } - - leaf cspf-tiebreaker { - when "../path-computation-method = 'LOCALLY_COMPUTED'" { - description - "The cspf tiebreaking method when the path is - locally computed"; - } - type cspf-tie-breaking; - description - "Determine the tie-breaking method to choose between - equally desirable paths during CSFP computation"; - } - - - leaf path-computation-server { - when "../path-computation-method = 'EXTERNALLY_QUERIED'" { - description - "The path-computation server when the path is - externally queried"; - } - type inet:ip-address; - description - "Address of the external path computation - server"; - } - - leaf explicit-path-name { - when "../path-computation-method = 'EXPLICITLY_DEFINED'" { - description - "The name of the explicitly defined path used"; - } - - type leafref { - path "../../../../../../../" - + "named-explicit-paths/named-explicit-path/" - + "config/name"; - // Requires YANG 1.1 - //require-instance true; - } - description - "reference to a defined path"; - } - - leaf preference { - type uint8 { - range "1..255"; - } - description - "Specifies a preference for this path. The lower the - number higher the preference"; - } - - uses oc-rsvp:rsvp-p2p-path-attributes-config; - } - - - grouping te-tunnel-p2p-top { - description - "Top level grouping for p2p configuration"; - - container p2p-tunnel-attributes { - when "../config/type = 'P2P'" { - description - "Include this container for LSPs of type P2P"; - } - description - "Parameters related to LSPs of type P2P"; - - container config { - description - "Configuration parameters for P2P LSPs"; - uses tunnel-p2p-attributes-config; - } - - container state { - config false; - description - "State parameters for P2P LSPs"; - uses tunnel-p2p-attributes-config; - } - - uses p2p-primary-paths-top; - uses p2p-secondary-paths-top; - } - } - - - grouping te-tunnel-state { - description - "Counters and statistical data relevent to a single - tunnel."; - - leaf oper-status { - type identityref { - base oc-mplst:LSP_OPER_STATUS; - } - description - "The operational status of the TE tunnel"; - } - - leaf role { - type identityref { - base oc-mplst:LSP_ROLE; - } - description - "The lsp role at the current node, whether it is headend, - transit or tailend."; - } - - leaf auto-generated { - type boolean; - description - "If the LSP was auto-generated by the system this leaf - should be set to true. Examples of auto-generated LSPs - are dynamically created backup LSPs to meet a FRR - policy."; - } - - container counters { - description - "State data for MPLS label switched paths. This state - data is specific to a single label switched path."; - - leaf bytes { - type yang:counter64; - description - "Number of bytes that have been forwarded over the - label switched path."; - } - - leaf packets { - type yang:counter64; - description - "Number of pacets that have been forwarded over the - label switched path."; - } - - leaf path-changes { - type yang:counter64; - description - "Number of path changes for the label switched path"; - } - - leaf state-changes { - type yang:counter64; - description - "Number of state changes for the label switched path"; - } - - leaf online-time { - type oc-types:timeticks64; - description - "Indication of the time the label switched path - transitioned to an Oper Up or in-service state. - - The value is the timestamp in nanoseconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - } - - leaf current-path-time { - type oc-types:timeticks64; - description - "Indicates the time the LSP switched onto its - current path. The value is reset upon a LSP path - change. - - The value is the timestamp in nanoseconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - - } - - leaf next-reoptimization-time { - type oc-types:timeticks64; - description - "Indicates the next scheduled time the LSP - will be reoptimized. - - The value is the timestamp in nanoseconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - - } - } - } - - grouping te-tunnel-bandwidth-config { - description - "Configuration parameters related to bandwidth for a tunnel"; - - leaf specification-type { - type te-bandwidth-type; - default SPECIFIED; - description - "The method used for settign the bandwidth, either explicitly - specified or configured"; - } - - leaf set-bandwidth { - when "../specification-type = 'SPECIFIED'" { - description - "The bandwidth value when bandwidth is explicitly - specified"; - } - type oc-mplst:bandwidth-kbps; - description - "set bandwidth explicitly, e.g., using - offline calculation"; - } - } - - grouping te-tunnel-bandwidth-state { - description - "Operational state parameters relating to bandwidth for a tunnel"; - - leaf signaled-bandwidth { - type oc-mplst:bandwidth-kbps; - description - "The currently signaled bandwidth of the LSP. In the case where - the bandwidth is specified explicitly, then this will match the - value of the set-bandwidth leaf; in cases where the bandwidth is - dynamically computed by the system, the current value of the - bandwidth should be reflected."; - } - } - - grouping te-tunnel-bandwidth-top { - description - "Top level grouping for specifying bandwidth for a tunnel"; - - container bandwidth { - description - "Bandwidth configuration for TE LSPs"; - - container config { - description - "Configuration parameters related to bandwidth on TE - tunnels:"; - uses te-tunnel-bandwidth-config; - } - - container state { - config false; - description - "State parameters related to bandwidth - configuration of TE tunnels"; - uses te-tunnel-bandwidth-config; - uses te-tunnel-bandwidth-state; - } - - container auto-bandwidth { - when "../config/specification-type = 'AUTO'" { - description - "Include this container for auto bandwidth - specific configuration"; - } - description - "Parameters related to auto-bandwidth"; - - container config { - description - "Configuration parameters relating to MPLS - auto-bandwidth on the tunnel."; - uses te-lsp-auto-bandwidth-config; - } - - container state { - config false; - description - "State parameters relating to MPLS - auto-bandwidth on the tunnel."; - uses te-lsp-auto-bandwidth-config; - uses te-lsp-auto-bandwidth-state; - } - - container overflow { - description - "configuration of MPLS overflow bandwidth - adjustement for the LSP"; - - container config { - description - "Config information for MPLS overflow bandwidth - adjustment"; - uses te-lsp-overflow-config; - } - - container state { - config false; - description - "Config information for MPLS overflow bandwidth - adjustment"; - uses te-lsp-overflow-config; - } - } - - container underflow { - description - "configuration of MPLS underflow bandwidth - adjustement for the LSP"; - - container config { - description - "Config information for MPLS underflow bandwidth - adjustment"; - uses te-lsp-underflow-config; - } - - container state { - config false; - description - "State information for MPLS underflow bandwidth - adjustment"; - uses te-lsp-underflow-config; - } - } - } - } - } - - grouping p2p-path-candidate-secondary-path-config { - description - "Configuration parameters relating to a secondary path which - is a candidate for a particular primary path"; - - leaf secondary-path { - type leafref { - path "../../../../../../p2p-secondary-paths/" + - "p2p-secondary-path/config/name"; - } - description - "A reference to the secondary path that should be utilised - when the containing primary path option is in use"; - } - - leaf priority { - type uint16; - description - "The priority of the specified secondary path option. Higher - priority options are less preferable - such that a secondary - path reference with a priority of 0 is the most preferred"; - } - } - - grouping p2p-path-candidate-secondary-path-state { - description - "Operational state parameters relating to a secondary path - which is a candidate for a particular primary path"; - - leaf active { - type boolean; - description - "Indicates the current active path option that has - been selected of the candidate secondary paths"; - } - } - - grouping p2p-primary-paths-top { - description - "Top level grouping for p2p primary paths"; - - container p2p-primary-path { - description - "Primary paths associated with the LSP"; - - list p2p-primary-path { - key "name"; - description - "List of p2p primary paths for a tunnel"; - - leaf name { - type leafref { - path "../config/name"; - // Requires YANG 1.1 - //require-instance true; - } - description - "Path name"; - } - - container config { - description - "Configuration parameters related to paths"; - uses p2p-path-config; - } - - container state { - config false; - description - "State parameters related to paths"; - uses p2p-path-config; - uses p2p-path-state; - } - - container candidate-secondary-paths { - description - "The set of candidate secondary paths which may be used - for this primary path. When secondary paths are specified - in the list the path of the secondary LSP in use must be - restricted to those path options referenced. The - priority of the secondary paths is specified within the - list. Higher priority values are less preferred - that is - to say that a path with priority 0 is the most preferred - path. In the case that the list is empty, any secondary - path option may be utilised when the current primary path - is in use."; - - list candidate-secondary-path { - key "secondary-path"; - - description - "List of secondary paths which may be utilised when the - current primary path is in use"; - - leaf secondary-path { - type leafref { - path "../config/secondary-path"; - } - description - "A reference to the secondary path option reference - which acts as the key of the candidate-secondary-path - list"; - } - - container config { - description - "Configuration parameters relating to the candidate - secondary path"; - - uses p2p-path-candidate-secondary-path-config; - } - - container state { - config false; - description - "Operational state parameters relating to the candidate - secondary path"; - - uses p2p-path-candidate-secondary-path-config; - uses p2p-path-candidate-secondary-path-state; - } - } - } - - uses te-path-placement-constraints-top; - - } - } - } - - grouping p2p-secondary-paths-top { - description - "Top level grouping for p2p secondary paths"; - - container p2p-secondary-paths { - description - "Secondary paths for the LSP"; - - list p2p-secondary-path { - key "name"; - description - "List of p2p primary paths for a tunnel"; - - leaf name { - type leafref { - path "../config/name"; - // Requires YANG 1.1 - //require-instance true; - } - description - "Path name"; - } - - container config { - description - "Configuration parameters related to paths"; - uses p2p-path-config; - } - - container state { - config false; - description - "State parameters related to paths"; - uses p2p-path-config; - uses p2p-path-state; - } - - uses te-path-placement-constraints-top; - } - } - } - - grouping te-tunnels-top { - description - "Top level grouping for TE tunnels"; - - container tunnels { - description - "Enclosing container for tunnels"; - list tunnel { - key "name"; - description - "List of TE tunnels. This list contains only the LSPs that the - current device originates (i.e., for which it is the head-end). - Where the signaling protocol utilised for an LSP allows a mid-point - or tail device to be aware of the LSP (e.g., RSVP-TE), then the - associated sessions are maintained per protocol"; - - leaf name { - type leafref { - path "../config/name"; - // Requires YANG 1.1 - //require-instance true; - } - description - "The tunnel name"; - } - - container config { - description - "Configuration parameters related to TE tunnels:"; - uses te-global-tunnel-config; - } - - container state { - config false; - description - "State parameters related to TE tunnels"; - uses te-global-tunnel-config; - uses te-tunnel-state; - - } - - uses te-tunnel-bandwidth-top; - uses te-tunnel-p2p-top; - // TODO - add the p2mp configuration - } - } - } - -// data definition statements - -// augment statements - -// rpc statements - -// notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-mpls-types.yang b/src/plugins/yang/openconfig/openconfig-mpls-types.yang deleted file mode 100644 index 18d3816..0000000 --- a/src/plugins/yang/openconfig/openconfig-mpls-types.yang +++ /dev/null @@ -1,426 +0,0 @@ -module openconfig-mpls-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/mpls-types"; - - prefix "oc-mpls-types"; - - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "General types for MPLS / TE data model"; - - oc-ext:openconfig-version "3.0.0"; - - revision "2018-07-02" { - description - "Add new RSVP-TE statistics, remove associated-rsvp-session - leaf. Remove use of date-and-time."; - reference "3.0.0"; - } - - revision "2018-06-16" { - description - "Included attributes for base LDP configuration."; - reference "2.6.0"; - } - - revision "2018-06-13" { - description - "Add ttl-propagation to global MPLS config"; - reference "2.5.0"; - } - - revision "2018-06-05" { - description - "Fixed bugs in when statements on RSVP-TE attributes"; - reference "2.4.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "2.4.1"; - } - - revision "2017-06-21" { - description - "Add TC bits typedef."; - reference "2.4.0"; - } - - revision "2017-03-22" { - description - "Add RSVP calculated-absolute-subscription-bw"; - reference "2.3.0"; - } - - revision "2017-01-26" { - description - "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; - reference "2.2.0"; - } - - revision "2016-12-15" { - description - "Add additional MPLS parameters"; - reference "2.1.0"; - } - - revision "2016-09-01" { - description - "Revisions based on implementation feedback"; - reference "2.0.0"; - } - - revision "2016-08-08" { - description - "Public release of MPLS models"; - reference "1.0.1"; - } - - // identity statements - - identity PATH_COMPUTATION_METHOD { - description - "base identity for supported path computation - mechanisms"; - } - - identity LOCALLY_COMPUTED { - base PATH_COMPUTATION_METHOD; - description - "indicates a constrained-path LSP in which the - path is computed by the local LER"; - } - - identity EXTERNALLY_QUERIED { - base PATH_COMPUTATION_METHOD; - description - "Constrained-path LSP in which the path is - obtained by querying an external source, such as a PCE server. - In the case that an LSP is defined to be externally queried, it may - also have associated explicit definitions (which are provided to the - external source to aid computation); and the path that is returned by - the external source is not required to provide a wholly resolved - path back to the originating system - that is to say, some local - computation may also be required"; - } - - identity EXPLICITLY_DEFINED { - base PATH_COMPUTATION_METHOD; - description - "constrained-path LSP in which the path is - explicitly specified as a collection of strict or/and loose - hops"; - } - - - // using identities rather than enum types to simplify adding new - // signaling protocols as they are introduced and supported - identity PATH_SETUP_PROTOCOL { - description - "base identity for supported MPLS signaling - protocols"; - } - - identity PATH_SETUP_RSVP { - base PATH_SETUP_PROTOCOL; - description - "RSVP-TE signaling protocol"; - } - - identity PATH_SETUP_SR { - base PATH_SETUP_PROTOCOL; - description - "Segment routing"; - } - - identity PATH_SETUP_LDP { - base PATH_SETUP_PROTOCOL; - description - "LDP - RFC 5036"; - } - - - identity PROTECTION_TYPE { - description - "base identity for protection type"; - } - - identity UNPROTECTED { - base PROTECTION_TYPE; - description - "no protection is desired"; - } - - identity LINK_PROTECTION_REQUIRED { - base PROTECTION_TYPE; - description - "link protection is desired"; - } - - identity LINK_NODE_PROTECTION_REQUESTED { - base PROTECTION_TYPE; - description - "node and link protection are both desired"; - } - - identity LSP_ROLE { - description - "Base identity for describing the role of - label switched path at the current node"; - } - - identity INGRESS { - base LSP_ROLE; - description - "Label switched path is an ingress (headend) - LSP"; - } - - identity EGRESS { - base LSP_ROLE; - description - "Label switched path is an egress (tailend) - LSP"; - } - - identity TRANSIT { - base LSP_ROLE; - description - "Label switched path is a transit LSP"; - } - - - identity TUNNEL_TYPE { - description - "Base identity from which specific tunnel types are - derived."; - } - - identity P2P { - base TUNNEL_TYPE; - description - "TE point-to-point tunnel type."; - } - - identity P2MP { - base TUNNEL_TYPE; - description - "TE point-to-multipoint tunnel type."; - } - - - identity LSP_OPER_STATUS { - description - "Base identity for LSP operational status"; - } - - identity DOWN { - base LSP_OPER_STATUS; - description - "LSP is operationally down or out of service"; - } - - identity UP { - base LSP_OPER_STATUS; - description - "LSP is operationally active and available - for traffic."; - } - - identity TUNNEL_ADMIN_STATUS { - description - "Base identity for tunnel administrative status"; - } - - identity ADMIN_DOWN { - base TUNNEL_ADMIN_STATUS; - description - "LSP is administratively down"; - } - - identity ADMIN_UP { - base TUNNEL_ADMIN_STATUS; - description - "LSP is administratively up"; - } - - identity NULL_LABEL_TYPE { - description - "Base identity from which specific null-label types are - derived."; - } - - identity EXPLICIT { - base NULL_LABEL_TYPE; - description - "Explicit null label is used."; - } - - identity IMPLICIT { - base NULL_LABEL_TYPE; - description - "Implicit null label is used."; - } - - identity LSP_METRIC_TYPE { - description - "Base identity for types of LSP metric specification"; - } - - identity LSP_METRIC_RELATIVE { - base LSP_METRIC_TYPE; - description - "The metric specified for the LSPs to which this identity refers - is specified as a relative value to the IGP metric cost to the - LSP's tail-end."; - } - - identity LSP_METRIC_ABSOLUTE { - base LSP_METRIC_TYPE; - description - "The metric specified for the LSPs to which this identity refers - is specified as an absolute value"; - } - - identity LSP_METRIC_INHERITED { - base LSP_METRIC_TYPE; - description - "The metric for for the LSPs to which this identity refers is - not specified explicitly - but rather inherited from the IGP - cost directly"; - } - - // typedef statements - typedef mpls-label { - type union { - type uint32 { - range 16..1048575; - } - type enumeration { - enum IPV4_EXPLICIT_NULL { - value 0; - description - "valid at the bottom of the label stack, - indicates that stack must be popped and packet forwarded - based on IPv4 header"; - } - enum ROUTER_ALERT { - value 1; - description - "allowed anywhere in the label stack except - the bottom, local router delivers packet to the local CPU - when this label is at the top of the stack"; - } - enum IPV6_EXPLICIT_NULL { - value 2; - description - "valid at the bottom of the label stack, - indicates that stack must be popped and packet forwarded - based on IPv6 header"; - } - enum IMPLICIT_NULL { - value 3; - description - "assigned by local LSR but not carried in - packets"; - } - enum ENTROPY_LABEL_INDICATOR { - value 7; - description - "Entropy label indicator, to allow an LSR - to distinguish between entropy label and applicaiton - labels RFC 6790"; - } - enum NO_LABEL { - description - "This value is utilised to indicate that the packet that - is forwarded by the local system does not have an MPLS - header applied to it. Typically, this is used at the - egress of an LSP"; - } - } - } - description - "type for MPLS label value encoding"; - reference "RFC 3032 - MPLS Label Stack Encoding"; - } - - typedef tunnel-type { - type enumeration { - enum P2P { - description - "point-to-point label-switched-path"; - } - enum P2MP { - description - "point-to-multipoint label-switched-path"; - } - enum MP2MP { - description - "multipoint-to-multipoint label-switched-path"; - } - } - description - "defines the tunnel type for the LSP"; - reference - "RFC 6388 - Label Distribution Protocol Extensions for - Point-to-Multipoint and Multipoint-to-Multipoint Label Switched - Paths - RFC 4875 - Extensions to Resource Reservation Protocol - - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE - Label Switched Paths (LSPs)"; - } - - typedef bandwidth-kbps { - type uint64; - units "Kbps"; - description - "Bandwidth values expressed in kilobits per second"; - } - - typedef bandwidth-mbps { - type uint64; - units "Mbps"; - description - "Bandwidth values expressed in megabits per second"; - } - - typedef bandwidth-gbps { - type uint64; - units "Gbps"; - description - "Bandwidth values expressed in gigabits per second"; - } - - typedef mpls-tc { - type uint8 { - range "0..7"; - } - description - "Values of the MPLS Traffic Class (formerly known as - Experimental, EXP) bits"; - } - - // grouping statements - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-mpls.yang b/src/plugins/yang/openconfig/openconfig-mpls.yang deleted file mode 100644 index e6bdf96..0000000 --- a/src/plugins/yang/openconfig/openconfig-mpls.yang +++ /dev/null @@ -1,746 +0,0 @@ -module openconfig-mpls { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/mpls"; - - prefix "oc-mpls"; - - - // import some basic types - import openconfig-mpls-types { prefix oc-mplst; } - import openconfig-mpls-rsvp { prefix oc-rsvp; } - import openconfig-mpls-ldp { prefix oc-ldp; } - import openconfig-types { prefix oc-types; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-segment-routing { prefix oc-sr; } - - // include submodules - include openconfig-mpls-te; - include openconfig-mpls-igp; - include openconfig-mpls-static; - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module provides data definitions for configuration of - Multiprotocol Label Switching (MPLS) and associated protocols for - signaling and traffic engineering. - - RFC 3031: Multiprotocol Label Switching Architecture - - The MPLS / TE data model consists of several modules and - submodules as shown below. The top-level MPLS module describes - the overall framework. Three types of LSPs are supported: - - i) traffic-engineered (or constrained-path) - - ii) IGP-congruent (LSPs that follow the IGP path) - - iii) static LSPs which are not signaled - - The structure of each of these LSP configurations is defined in - corresponding submodules. Companion modules define the relevant - configuration and operational data specific to key signaling - protocols used in operational practice. - - - +-------+ - +---------------->| MPLS |<--------------+ - | +-------+ | - | ^ | - | | | - +----+-----+ +--------+-------+ +-----+-----+ - | TE LSPs | | IGP-based LSPs | |static LSPs| - | | | | | | - +----------+ +----------------+ +-----------+ - ^ ^ ^ ^ - | +----------------+ | +--------+ - | | | | - | +------+ +-+---+-+ +--+--+ - +---+ RSVP | |SEGMENT| | LDP | - +------+ |ROUTING| +-----+ - +-------+ - "; - - - oc-ext:openconfig-version "3.0.0"; - - revision "2018-07-02" { - description - "Add new RSVP-TE statistics, remove associated-rsvp-session - leaf. Remove use of date-and-time."; - reference "3.0.0"; - } - - revision "2018-06-16" { - description - "Included attributes for base LDP configuration."; - reference "2.6.0"; - } - - revision "2018-06-13" { - description - "Add ttl-propagation to global MPLS config"; - reference "2.5.0"; - } - - revision "2018-06-05" { - description - "Fixed bugs in when statements on RSVP-TE attributes"; - reference "2.4.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "2.4.1"; - } - - revision "2017-06-21" { - description - "Add TC bits typedef."; - reference "2.4.0"; - } - - revision "2017-03-22" { - description - "Add RSVP calculated-absolute-subscription-bw"; - reference "2.3.0"; - } - - revision "2017-01-26" { - description - "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; - reference "2.2.0"; - } - - revision "2016-12-15" { - description - "Add additional MPLS parameters"; - reference "2.1.0"; - } - - revision "2016-09-01" { - description - "Revisions based on implementation feedback"; - reference "2.0.0"; - } - - revision "2016-08-08" { - description - "Public release of MPLS models"; - reference "1.0.1"; - } - - - // grouping statements - - grouping mpls-admin-group-config { - description - "configuration data for MPLS link admin groups"; - - leaf admin-group-name { - type string; - description - "name for mpls admin-group"; - } - - leaf bit-position { - type uint32; - description - "bit-position value for mpls admin-group. The value - for the admin group is an integer that represents one - of the bit positions in the admin-group bitmask. Values - between 0 and 31 are interpreted as the original limit - of 32 admin groups. Values >=32 are interpreted as - extended admin group values as per RFC7308."; - } - - } - - grouping mpls-admin-groups-top { - - description - "top-level mpls admin-groups config - and state containers"; - - container mpls-admin-groups { - description - "Top-level container for admin-groups configuration - and state"; - - list admin-group { - key "admin-group-name"; - description - "configuration of value to name mapping - for mpls affinities/admin-groups"; - - leaf admin-group-name { - type leafref { - path "../config/admin-group-name"; - } - description - "name for mpls admin-group"; - } - container config { - description - "Configurable items for admin-groups"; - uses mpls-admin-group-config; - } - - container state { - config false; - description - "Operational state for admin-groups"; - uses mpls-admin-group-config; - } - } - } - } - - grouping mpls-te-igp-flooding-bandwidth-config { - description - "Configurable items for igp flooding bandwidth - threshold configuration."; - leaf threshold-type { - type enumeration { - enum DELTA { - description - "DELTA indicates that the local - system should flood IGP updates when a - change in reserved bandwidth >= the specified - delta occurs on the interface."; - } - enum THRESHOLD_CROSSED { - description - "THRESHOLD-CROSSED indicates that - the local system should trigger an update (and - hence flood) the reserved bandwidth when the - reserved bandwidth changes such that it crosses, - or becomes equal to one of the threshold values."; - } - } - description - "The type of threshold that should be used to specify the - values at which bandwidth is flooded. DELTA indicates that - the local system should flood IGP updates when a change in - reserved bandwidth >= the specified delta occurs on the - interface. Where THRESHOLD_CROSSED is specified, the local - system should trigger an update (and hence flood) the - reserved bandwidth when the reserved bandwidth changes such - that it crosses, or becomes equal to one of the threshold - values"; - } - - leaf delta-percentage { - when "../threshold-type = 'DELTA'" { - description - "The percentage delta can only be specified when the - threshold type is specified to be a percentage delta of - the reserved bandwidth"; - } - type oc-types:percentage; - description - "The percentage of the maximum-reservable-bandwidth - considered as the delta that results in an IGP update - being flooded"; - } - - leaf threshold-specification { - when "../threshold-type = 'THRESHOLD_CROSSED'" { - description - "The selection of whether mirrored or separate threshold - values are to be used requires user specified thresholds to - be set"; - } - type enumeration { - enum MIRRORED_UP_DOWN { - description - "MIRRORED_UP_DOWN indicates that a single set of - threshold values should be used for both increasing - and decreasing bandwidth when determining whether - to trigger updated bandwidth values to be flooded - in the IGP TE extensions."; - } - enum SEPARATE_UP_DOWN { - description - "SEPARATE_UP_DOWN indicates that a separate - threshold values should be used for the increasing - and decreasing bandwidth when determining whether - to trigger updated bandwidth values to be flooded - in the IGP TE extensions."; - } - } - description - "This value specifies whether a single set of threshold - values should be used for both increasing and decreasing - bandwidth when determining whether to trigger updated - bandwidth values to be flooded in the IGP TE extensions. - MIRRORED-UP-DOWN indicates that a single value (or set of - values) should be used for both increasing and decreasing - values, where SEPARATE-UP-DOWN specifies that the increasing - and decreasing values will be separately specified"; - } - - leaf-list up-thresholds { - when "../threshold-type = 'THRESHOLD_CROSSED'" + - "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { - description - "A list of up-thresholds can only be specified when the - bandwidth update is triggered based on crossing a - threshold and separate up and down thresholds are - required"; - } - type oc-types:percentage; - description - "The thresholds (expressed as a percentage of the maximum - reservable bandwidth) at which bandwidth updates are to be - triggered when the bandwidth is increasing."; - } - - leaf-list down-thresholds { - when "../threshold-type = 'THRESHOLD_CROSSED'" + - "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { - description - "A list of down-thresholds can only be specified when the - bandwidth update is triggered based on crossing a - threshold and separate up and down thresholds are - required"; - } - type oc-types:percentage; - description - "The thresholds (expressed as a percentage of the maximum - reservable bandwidth) at which bandwidth updates are to be - triggered when the bandwidth is decreasing."; - } - - leaf-list up-down-thresholds { - when "../threshold-type = 'THRESHOLD_CROSSED'" + - "and ../threshold-specification = 'MIRRORED_UP_DOWN'" { - description - "A list of thresholds corresponding to both increasing - and decreasing bandwidths can be specified only when an - update is triggered based on crossing a threshold, and - the same up and down thresholds are required."; - } - type oc-types:percentage; - description - "The thresholds (expressed as a percentage of the maximum - reservable bandwidth of the interface) at which bandwidth - updates are flooded - used both when the bandwidth is - increasing and decreasing"; - } - } - - - grouping mpls-te-igp-flooding-bandwidth { - description - "Top level group for traffic engineering - database flooding options"; - container igp-flooding-bandwidth { - description - "Interface bandwidth change percentages - that trigger update events into the IGP traffic - engineering database (TED)"; - container config { - description - "Configuration parameters for TED - update threshold "; - uses mpls-te-igp-flooding-bandwidth-config; - } - container state { - config false; - description - "State parameters for TED update threshold "; - uses mpls-te-igp-flooding-bandwidth-config; - } - } - } - - - grouping te-lsp-delay-config { - description - "Group for the timers goerning the delay - in installation and cleanup of TE LSPs"; - - leaf install-delay { - type uint16 { - range 0..3600; - } - units seconds; - description - "delay the use of newly installed te lsp for a - specified amount of time."; - } - - leaf cleanup-delay { - type uint16; - units seconds; - description - "delay the removal of old te lsp for a specified - amount of time"; - } - } - - grouping te-interface-attributes-top { - description - "Top level grouping for attributes - for TE interfaces."; - - list interface { - key "interface-id"; - description - "List of TE interfaces"; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "Reference to the interface id list key"; - } - - container config { - description - "Configuration parameters related to TE interfaces:"; - uses te-interface-attributes-config; - } - - container state { - config false; - description - "State parameters related to TE interfaces"; - uses te-interface-attributes-config; - } - - uses oc-if:interface-ref; - - uses mpls-te-igp-flooding-bandwidth; - } - } - - grouping te-interface-attributes-config { - description - "global level definitions for interfaces - on which TE is run"; - - leaf interface-id { - type oc-if:interface-id; - description - "Id of the interface"; - } - - leaf te-metric { - type uint32; - description - "TE specific metric for the link"; - } - - leaf-list srlg-membership { - type leafref { - path "../../../../te-global-attributes/srlgs/srlg/name"; - } - description - "list of references to named shared risk link groups that the - interface belongs to."; - } - - leaf-list admin-group { - type string; - description - "list of admin groups (by name) on the interface"; - } - } - - grouping mpls-te-lsp-timers { - description - "Grouping for traffic engineering timers"; - container te-lsp-timers { - description - "Definition for delays associated with setup - and cleanup of TE LSPs"; - - container config { - description - "Configuration parameters related - to timers for TE LSPs"; - - uses te-lsp-delay-config; - uses te-tunnel-reoptimize-config; - } - - container state { - config false; - description - "State related to timers for TE LSPs"; - - uses te-lsp-delay-config; - uses te-tunnel-reoptimize-config; - } - } - } - - grouping mpls-global-config { - description - "Definition of global MPLS configuration parameters"; - - leaf null-label { - type identityref { - base oc-mplst:NULL_LABEL_TYPE; - } - default oc-mplst:IMPLICIT; - description - "The null-label type used, implicit or explicit"; - } - - leaf ttl-propagation { - type boolean; - default true; - description - "Enables TTL propagation across the MPLS domain. - When ttl-propagation is set to true, the IP TTL - is copied into the MPLS header TTL when pushing - a label to an IP packet. If false, the IP TTL is - not copied into the MPLS header TTL and, therefore, - the IP TTL is not updated in the MPLS domain."; - } - - } - - grouping mpls-global-top { - description - "Top level grouping for global MPLS configuration "; - - container config { - description - "Top level global MPLS configuration"; - uses mpls-global-config; - } - - container state { - config false; - description - "Top level global MPLS state"; - uses mpls-global-config; - } - } - - grouping mpls-interfaces-top { - description - "Top level grouping for attributes - for MPLS-enabled interfaces."; - container interface-attributes { - description - "Parameters related to MPLS interfaces"; - list interface { - key "interface-id"; - description - "List of TE interfaces"; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "Reference to the interface id list key"; - } - - container config { - description - "Configuration parameters related to MPLS interfaces:"; - uses mpls-interface-attributes-config; - } - - container state { - config false; - description - "State parameters related to TE interfaces"; - uses mpls-interface-attributes-config; - } - - uses oc-if:interface-ref; - } - } - } - - grouping mpls-interface-attributes-config { - description - "global level definitions for interfaces - on which MPLS is run"; - - leaf interface-id { - type oc-if:interface-id; - description - "Indentifier for the MPLS interface"; - } - - leaf mpls-enabled { - type boolean; - default false; - description - "Enable MPLS forwarding on this interface"; - } - } - - grouping mpls-label-block-config { - description - "Configuration parameters relating to an MPLS label block."; - - leaf local-id { - type string; - description - "A local identifier for the global label block allocation."; - } - - leaf lower-bound { - type oc-mplst:mpls-label; - description - "Lower bound of the global label block. The block is defined to include - this label."; - } - - leaf upper-bound { - type oc-mplst:mpls-label; - description - "Upper bound for the global label block. The block is defined to include - this label."; - } - } - - grouping mpls-label-blocks-top { - description - "Top-level configuration and operational state parameters corresponding - to reserved label blocks."; - - container reserved-label-blocks { - description - "A range of labels starting with the start-label and up-to and including - the end label that should be allocated as reserved. These labels should - not be utilised by any dynamic label allocation on the local system unless - the allocating protocol is explicitly configured to specify that - allocation of labels should be out of the label block specified."; - - list reserved-label-block { - key "local-id"; - - description - "A range of labels starting with the start-label up to and including - the end label that should be allocated for use by a specific protocol."; - - leaf local-id { - type leafref { - path "../config/local-id"; - } - description - "A reference to a unique local identifier for this label block."; - } - - container config { - description - "Configuration parameters relating to the label block."; - - uses mpls-label-block-config; - } - - container state { - config false; - description - "State parameters relating to the label block."; - - uses mpls-label-block-config; - } - } - } - } - - grouping mpls-top { - description - "Top level grouping for MPLS configuration and state"; - - container mpls { - description - "Anchor point for mpls configuration and operational - data"; - - container global { - // entropy label support, label ranges will be added here. - description - "general mpls configuration applicable to any - type of LSP and signaling protocol - label ranges, - entropy label supportmay be added here"; - uses mpls-global-top; - uses mpls-interfaces-top; - uses mpls-label-blocks-top; - } - - container te-global-attributes { - description - "traffic-engineering global attributes"; - uses mpls-te-srlg-top; - uses mpls-admin-groups-top; - uses mpls-te-lsp-timers; - } - - container te-interface-attributes { - description - "traffic engineering attributes specific - for interfaces"; - uses te-interface-attributes-top; - } - - container signaling-protocols { - description - "top-level signaling protocol configuration"; - - uses oc-rsvp:rsvp-global; - uses oc-ldp:ldp-global; - uses oc-sr:sr-mpls-top; - } - - container lsps { - description - "LSP definitions and configuration"; - - container constrained-path { - description - "traffic-engineered LSPs supporting different - path computation and signaling methods"; - uses explicit-paths-top; - uses te-tunnels-top; - } - - container unconstrained-path { - description - "LSPs that use the IGP-determined path, i.e., non - traffic-engineered, or non constrained-path"; - - uses igp-lsp-common; - uses igp-lsp-setup; - } - - container static-lsps { - description - "statically configured LSPs, without dynamic - signaling"; - - uses static-lsp-top; - } - } - } - } - - // augment statements - - // rpc statements - - // notification statements -} diff --git a/src/plugins/yang/openconfig/openconfig-network-instance-l2.yang b/src/plugins/yang/openconfig/openconfig-network-instance-l2.yang deleted file mode 100644 index 530b8c8..0000000 --- a/src/plugins/yang/openconfig/openconfig-network-instance-l2.yang +++ /dev/null @@ -1,339 +0,0 @@ -submodule openconfig-network-instance-l2 { - - belongs-to openconfig-network-instance { - prefix "oc-netinst"; - } - - // import some basic types - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-interfaces { prefix "oc-if"; } - import ietf-yang-types { prefix "yang"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module contains groupings which specifically relate to - Layer 2 network instance configuration and operational state - parameters."; - - oc-ext:openconfig-version "0.11.0"; - - revision "2018-08-11" { - description - "Add vlan id as additional key in MAC table"; - reference "0.11.0"; - } - - revision "2018-06-22" { - description - "Fix typo in OSPF when statement"; - reference "0.10.2"; - } - - revision "2018-06-05" { - description - "Fix bugs in when statements"; - reference "0.10.1"; - } - - revision "2018-02-19" { - description - "Add PIM and IGMP to network instance"; - reference "0.10.0"; - } - - revision "2017-12-13" { - description - "Fix incorrect constraint on SR and MPLS containers"; - reference "0.9.0"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes"; - reference "0.8.1"; - } - - revision "2017-02-28" { - description - "Add OSPFv2 to network instance"; - reference "0.8.0"; - } - - revision "2017-01-26" { - description - "Add policy forwarding to network instance"; - reference "0.7.0"; - } - - revision "2017-01-13" { - description - "Add AFT to the network instance"; - reference "0.6.0"; - } - - revision "2016-12-15" { - description - "Add segment routing to network instance"; - reference "0.5.0"; - } - - revision "2016-11-10" { - description - "Update model to include IS-IS."; - reference "0.4.1"; - } - - revision "2016-10-12" { - description - "Update table connections"; - reference "0.4.0"; - } - - revision "2016-09-28" { - description - "Change L2 instance to submodule; add MAC table"; - reference "0.3.0"; - } - - revision "2016-08-11" { - description - "Resolve repeated container names in routing protocols"; - reference "0.2.3"; - } - - revision "2016-07-08" { - description - "Updated with refactored routing protocol models"; - reference "0.2.1"; - } - - revision "2016-03-29" { - description - "Initial revision"; - reference "0.2.0"; - } - - revision "2015-11-20" { - description - "Initial revision"; - reference "0.1.0"; - } - - grouping l2ni-instance { - description - "Configuration and operational state parameters relating - to a Layer 2 network instance"; - - container fdb { - description - "Operational state and configuration parameters relating to - the forwarding database of the network instance"; - - container config { - description - "Configuration parameters relating to the FDB"; - uses l2ni-fdb-mac-config; - } - container state { - config false; - description - "Operational state parameters relating to the FDB"; - uses l2ni-fdb-mac-config; - } - - uses l2ni-mac-table-top; - } - } - - grouping l2ni-instance-common-config { - description - "Common configuration options which are specific to Layer 2 - network instances"; - - leaf mtu { - type uint16; - description - "The maximum frame size which should be supported for this - instance for Layer 2 frames"; - } - - } - - grouping l2ni-fdb-mac-config { - description - "Parameters relating to FDB behaviour relating to MAC - addresses"; - - leaf mac-learning { - type boolean; - description - "When this leaf is set to true, MAC learning is enabled for - the network instance, such that MAC addresses are learned - from ingress frames and added to the FDB."; - } - - leaf mac-aging-time { - // Cisco supports one aging time for local and remote, but - // can specify this time is absolute or against inactivity. - // ALU SROS supports different aging times for local and remote - // but does not allow absolute/inactivity specification. - // JNPR supports only a single aging time, and no specification - // of whether inactivity/absolute is used. - // It is easy to augment new options in here for local remote - // and an extra leaf to allow specification of the type of aging - // so this is left as a single value. - type uint16; - units seconds; - description - "The number of seconds of inactivity after which the entry - in the local FDB is timed out."; - } - - leaf maximum-entries { - type uint16; - description - "The maximum number of MAC address entries that should be - accepted into the FDB"; - } - } - - grouping l2ni-encapsulation-config { - description - "Encapsulation related configuration parameters for a L2 - network instance"; - - leaf control-word { - type boolean; - description - "Whether the control-word should be used for the network - instance"; - reference "RFC3985"; - } - } - - grouping l2ni-mac-table-config { - description - "Configuration data for MAC table entries"; - - leaf mac-address { - type yang:mac-address; - description - "MAC address for the dynamic or static MAC table - entry"; - } - - leaf vlan { - //TODO(aashaikh): Consider whether this should just reflect the - //VLAN id or be a union type to also support displaying/setting - //the VLAN by name (i.e., global VLAN configured in the VLAN - // model). - type leafref { - path "../../../../../../vlans/vlan/config/vlan-id"; - } - description - "VLAN on which the MAC address is present. The same MAC - address may be seen on multiple VLANs in some cases."; - } - } - - grouping l2ni-mac-table-state { - description - "Operational state data for MAC table entries"; - - leaf age { - type uint64; - units seconds; - description - "The time in seconds since the MAC address has been in the - table"; - } - - leaf entry-type { - type enumeration { - enum STATIC { - description - "Statically programmed MAC table entry"; - } - enum DYNAMIC { - description - "Dynamically learned MAC table entry"; - } - } - description - "Indicates whether the entry was statically configured, or - dynamically learned."; - } - - } - - grouping l2ni-mac-table-top { - description - "Top-level grouping for MAC table list"; - - - container mac-table { - description - "Table of learned or statically configured MAC addresses and - corresponding VLANs in the bridge domain"; - - container entries { - description - "Enclosing container for list of MAC table entries"; - - list entry { - key "mac-address vlan"; - description - "List of learned MAC addresses"; - - leaf mac-address { - type leafref { - path "../config/mac-address"; - } - description - "Reference to mac-address list key"; - } - - leaf vlan { - type leafref { - path "../config/vlan"; - } - description - "Reference to vlan list key"; - } - - container config { - description - "Configuration data for MAC table entries"; - - uses l2ni-mac-table-config; - } - - container state { - - config false; - - description - "Operational state data for MAC table entries"; - - uses l2ni-mac-table-config; - uses l2ni-mac-table-state; - } - - container interface { - description - "Reference to the base and/or subinterface for the - MAC table entry"; - - uses oc-if:interface-ref; - } - } - } - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-network-instance-l3.yang b/src/plugins/yang/openconfig/openconfig-network-instance-l3.yang deleted file mode 100644 index d9dca40..0000000 --- a/src/plugins/yang/openconfig/openconfig-network-instance-l3.yang +++ /dev/null @@ -1,234 +0,0 @@ -module openconfig-network-instance-l3 { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/network-instance-l3"; - - prefix "oc-ni-l3"; - - // import some basic types - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-types { prefix "octypes"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module contains groupings which specifically relate to - Layer 3 network instance configuration and operational state - parameters."; - - oc-ext:openconfig-version "0.11.0"; - - revision "2018-08-17" { - description - "Add a route limit for L3 network instances."; - reference "0.11.0"; - } - - revision "2017-12-13" { - description - "Fix incorrect constraint on SR and MPLS containers"; - reference "0.9.0"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes"; - reference "0.8.1"; - } - - revision "2017-02-28" { - description - "Add OSPFv2 to network instance"; - reference "0.8.0"; - } - - revision "2017-01-26" { - description - "Add policy forwarding to network instance"; - reference "0.7.0"; - } - - revision "2017-01-13" { - description - "Add AFT to the network instance"; - reference "0.6.0"; - } - - revision "2016-12-15" { - description - "Add segment routing to network instance"; - reference "0.5.0"; - } - - revision "2016-11-10" { - description - "Update model to include IS-IS."; - reference "0.4.1"; - } - - revision "2016-09-28" { - description - "Change L2 instance to submodule; add MAC table"; - reference "0.3.0"; - } - - revision "2016-08-11" { - description - "Resolve repeated container names in routing protocols"; - reference "0.2.3"; - } - - revision "2016-07-08" { - description - "Updated with refactored routing protocol models"; - reference "0.2.1"; - } - - revision "2016-03-29" { - description - "Initial revision"; - reference "0.2.0"; - } - - revision "2016-03-14" { - description - "Initial revision"; - reference "0.1.0"; - } - - grouping l3ni-instance { - description - "Configuration and operational state parameters relevant - to network instances that include a Layer 3 type"; - - } - - grouping l3ni-instance-common-config { - description - "Configuration parameters that are common to L3 network - instances other than the default instance"; - - leaf-list enabled-address-families { - type identityref { - base octypes:ADDRESS_FAMILY; - } - description - "The address families that are to be enabled for this - network instance."; - } - } - - grouping l3ni-route-limit-structural { - description - "Configuration and state for the maximum number of routes - that should be used by routing instance."; - - container route-limits { - description - "Configuration and operational state relating to the - maximum number of routes for the address family that - should be allowed within the Layer 3 network instance. - - When the specified value is reached, no further prefixes - should be installed into the system's RIB from this network - instance unless the warning only leaf is set. In this case, - new routes should still be installed. If a alarm threshold - is specified, then this should be used to generate - alarms via telemetry for the network instance."; - - list route-limit { - key "afi"; - - description - "A route limit applying to a particular address family."; - - leaf afi { - type leafref { - path "../config/afi"; - } - description - "Reference to the address family for which the route - limit is being applied."; - } - - container config { - description - "Configuration options relating to the route limit."; - uses l3ni-route-limit-config; - } - - container state { - config false; - description - "Operational state parameters relating to the route limit."; - uses l3ni-route-limit-config; - uses l3ni-route-limit-state; - } - } - } - } - - grouping l3ni-route-limit-config { - description - "Configuration options relating to the route limit for a network - instance."; - - leaf afi { - type identityref { - base octypes:ADDRESS_FAMILY; - } - description - "The address family for which the route limit applies."; - } - - leaf maximum { - type uint32; - description - "The maximum number of routes for the address family. The - system should not install more than maximum number of - prefixes into the RIB unless the warning-only leaf is specified."; - } - - leaf warning-only { - type boolean; - default false; - description - "When specified, the route limit specified is considered only as - a warning - and routes should continue to be installed into the - RIB over the limit specified in the maximum leaf."; - } - - leaf alarm-threshold { - type uint32; - description - "When specified, an alarm should be generated when the threshold - number of installed routes is reached."; - } - } - - grouping l3ni-route-limit-state { - description - "Operational state relating to the route limit for a network - instance."; - - leaf threshold-exceeded { - type boolean; - description - "This leaf should be set to true in the case that the threshold - number of routes has been exceeded."; - } - - leaf installed-routes { - type uint32; - description - "The current number of routes installed for the address family."; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-network-instance-policy.yang b/src/plugins/yang/openconfig/openconfig-network-instance-policy.yang deleted file mode 100644 index afbcacd..0000000 --- a/src/plugins/yang/openconfig/openconfig-network-instance-policy.yang +++ /dev/null @@ -1,115 +0,0 @@ -module openconfig-network-instance-policy { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/network-instance/policy"; - - prefix "oc-ni-pol"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-routing-policy { prefix oc-rpol; } - import openconfig-policy-types { prefix oc-pol-types; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines routing policy statements (conditions and - actions) for the network instance model. These statements are - generally added to the routing policy model."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2017-02-15" { - description - "Initial revision"; - reference "0.1.0"; - } - - // grouping statements - - grouping protocol-instance-policy-config { - description - "Configuration data for policy matching on protocol instance"; - - leaf protocol-identifier { - type identityref { - base oc-pol-types:INSTALL_PROTOCOL_TYPE; - } - description - "The identifier (protocol type) of the - protocol instance to match on in the local network - instance."; - } - - leaf protocol-name { - type string; - description - "The name of the protocol instance to match - on in the local network instance"; - } - } - - grouping protocol-instance-policy-state { - description - "Operational state data for policy matching on protocol - instance"; - } - - grouping protocol-instance-policy-top { - description - "Top-level grouping for policy matching on protocol instance"; - - container match-protocol-instance { - description - "Top-level container for protocol instance match condition - in policy statements. The protocol instance is referenced - by an identifier and name"; - - container config { - description - "Configuration data for policy matching on protocol - instance"; - - uses protocol-instance-policy-config; - } - - container state { - - config false; - - description - "Operational state data for policy matching on protocol instance"; - - uses protocol-instance-policy-config; - uses protocol-instance-policy-state; - } - } - } - - // data definition statements - - // augment statements - - augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + - "oc-rpol:conditions" { - description - "Add match conditions for protocol instances to the routing - policy model."; - - uses protocol-instance-policy-top; - } - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-network-instance-types.yang b/src/plugins/yang/openconfig/openconfig-network-instance-types.yang deleted file mode 100644 index 67ab357..0000000 --- a/src/plugins/yang/openconfig/openconfig-network-instance-types.yang +++ /dev/null @@ -1,261 +0,0 @@ -module openconfig-network-instance-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/network-instance-types"; - - prefix "oc-ni-types"; - - import openconfig-extensions { prefix "oc-ext"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Types associated with a network instance"; - - oc-ext:openconfig-version "0.8.1"; - - revision "2017-08-24" { - description - "Minor formatting fixes"; - reference "0.8.1"; - } - - revision "2017-02-28" { - description - "Add OSPFv2 to network instance"; - reference "0.8.0"; - } - - revision "2017-01-26" { - description - "Add policy forwarding to network instance"; - reference "0.7.0"; - } - - revision "2017-01-13" { - description - "Add AFT to the network instance"; - reference "0.6.0"; - } - - revision "2016-12-15" { - description - "Add segment routing to network instance"; - reference "0.5.0"; - } - - revision "2016-11-10" { - description - "Update model to include IS-IS."; - reference "0.4.1"; - } - - revision "2016-10-12" { - description - "Update table connections"; - reference "0.4.0"; - } - - revision "2016-09-28" { - description - "Change L2 instance to submodule; add MAC table"; - reference "0.3.0"; - } - - revision "2016-08-11" { - description - "Resolve repeated container names in routing protocols"; - reference "0.2.3"; - } - - revision "2016-07-08" { - description - "Updated with refactored routing protocol models"; - reference "0.2.1"; - } - - revision "2016-03-29" { - description - "Initial revision"; - reference "0.2.0"; - } - - revision "2015-10-18" { - description - "Initial revision"; - reference "0.1.0"; - } - - // identity statements - identity NETWORK_INSTANCE_TYPE { - description - "A base identity which can be extended to indicate different - types of network instance supported by a device."; - } - - identity DEFAULT_INSTANCE { - base NETWORK_INSTANCE_TYPE; - description - "A special routing instance which acts as the 'default' or - 'global' routing instance for a network device."; - } - - identity L3VRF { - base NETWORK_INSTANCE_TYPE; - description - "A private Layer 3 only routing instance which is formed of - one or more RIBs"; - } - - identity L2VSI { - base NETWORK_INSTANCE_TYPE; - description - "A private Layer 2 only switch instance which is formed of - one or more L2 forwarding tables"; - } - - identity L2P2P { - base NETWORK_INSTANCE_TYPE; - description - "A private Layer 2 only forwarding instance which acts as - a point to point connection between two endpoints"; - } - - identity L2L3 { - base NETWORK_INSTANCE_TYPE; - description - "A private Layer 2 and Layer 2 forwarding instance"; - } - - identity ENDPOINT_TYPE { - description - "Specification of the type of endpoint that is being associated - with a network instance"; - } - - identity LOCAL { - base ENDPOINT_TYPE; - description - "A local interface which is being associated with the endpoint"; - } - - identity REMOTE { - base ENDPOINT_TYPE; - description - "A remote interface which is being associated with the - endpoint"; - } - - identity LABEL_ALLOCATION_MODE { - description - "Base identity to be used to express types of label allocation - strategies to be used within a network instance"; - } - - identity PER_PREFIX { - base LABEL_ALLOCATION_MODE; - description - "A label is to be allocated per prefix entry in the RIB for the - network instance"; - } - - identity PER_NEXTHOP { - base LABEL_ALLOCATION_MODE; - description - "A label is to be allocated per nexthop entry in the RIB for - the network instance"; - } - - identity INSTANCE_LABEL { - base LABEL_ALLOCATION_MODE; - description - "A single label is to be used for the instance"; - } - - identity ENCAPSULATION { - description - "On the wire encapsulations that can be used when - differentiating network instances"; - } - - identity MPLS { - base ENCAPSULATION; - description - "Use MPLS labels to distinguish network instances on the wire"; - } - - identity VXLAN { - base ENCAPSULATION; - description - "Use VXLAN (RFC7348) VNIs to distinguish network instances on - the wire"; - } - - identity SIGNALLING_PROTOCOL { - description - "The signalling protocol that should be used to diseminate - entries within a forwarding instance"; - } - - identity LDP { - base SIGNALLING_PROTOCOL; - description - "Use LDP-based setup for signalling. Where the instance is - a point-to-point service this refers to RFC4447 ('Martini') - setup. Where the service is an L2VSI, or L2L3 instance it - refers to RFC4762 LDP-signalled VPLS instances"; - } - - identity BGP_VPLS { - base SIGNALLING_PROTOCOL; - description - "Use BGP-based signalling and autodiscovery for VPLS instances - as per RFC4761"; - } - - identity BGP_EVPN { - base SIGNALLING_PROTOCOL; - description - "Use BGP-based Ethernet VPN (RFC7432) based signalling for - the network instance"; - } - - // rjs note: - // this should move to openconfig-types when merged - typedef route-distinguisher { - type union { - // type 0: <2-byte administrator>:<4-byte assigned number> - type string { - pattern '^(65[0-5][0-3][0-5]|[1-5][1-5][0-9][0-9][0-9]|' - + '[1-9]?[1-9]?[0-9][0-9]|[1-9]):' - + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-5]|' - + '[0-3][0-9]{9}|[1-9][0-9]{1,8}|[1-9])$'; - } - // type 1: <ip-address>:<2-byte assigned number> - type string { - pattern - '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' - + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]):' - + '(65[0-5][0-3][0-5]|[1-5][1-5][0-9][0-9][0-9]|' - + '[1-9]?[1-9]?[0-9][0-9]|[1-9])$'; - } - // type 2: <4-byte as-number>:<2-byte assigned number> - type string { - pattern - '^(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-5]|' - + '[0-3][0-9]{9}|[1-9][0-9]{1,8}|[1-9]):' - + '(65[0-5][0-3][0-5]|[1-5]{2}[0-9]{3}|' - + '[1-9]{0,2}[0-9][0-9]|[1-9])$'; - } - } - description "A route distinguisher value"; - reference "RFC4364"; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-network-instance.yang b/src/plugins/yang/openconfig/openconfig-network-instance.yang deleted file mode 100644 index 0d42a11..0000000 --- a/src/plugins/yang/openconfig/openconfig-network-instance.yang +++ /dev/null @@ -1,1093 +0,0 @@ -module openconfig-network-instance { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/network-instance"; - - prefix "oc-netinst"; - - // import some basic types - //import ietf-inet-types { prefix inet; } - import ietf-yang-types { prefix "yang"; } - import ietf-inet-types { prefix "inet"; } - import openconfig-network-instance-types { prefix "oc-ni-types"; } - import openconfig-policy-types { prefix "oc-pol-types"; } - import openconfig-routing-policy { prefix "oc-rpol"; } - import openconfig-local-routing { prefix "oc-loc-rt"; } - import openconfig-interfaces { prefix "oc-if"; } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-network-instance-l3 { prefix "oc-ni-l3"; } - import openconfig-types { prefix "oc-types"; } - import openconfig-bgp { prefix "oc-bgp"; } - import openconfig-mpls { prefix "oc-mpls"; } - import openconfig-vlan { prefix "oc-vlan"; } - import openconfig-ospfv2 { prefix "oc-ospfv2"; } - import openconfig-policy-forwarding { prefix "oc-pf"; } - import openconfig-segment-routing { prefix "oc-sr"; } - import openconfig-isis { prefix "oc-isis"; } - import openconfig-aft { prefix "oc-aft"; } - import openconfig-pim { prefix "oc-pim"; } - import openconfig-igmp { prefix "oc-igmp"; } - - // include submodules - include openconfig-network-instance-l2; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "An OpenConfig description of a network-instance. This may be - a Layer 3 forwarding construct such as a virtual routing and - forwarding (VRF) instance, or a Layer 2 instance such as a - virtual switch instance (VSI). Mixed Layer 2 and Layer 3 - instances are also supported."; - - oc-ext:openconfig-version "0.11.0"; - - revision "2018-08-11" { - description - "Add vlan id as additional key in MAC table"; - reference "0.11.0"; - } - - revision "2018-06-22" { - description - "Fix typo in OSPF when statement"; - reference "0.10.2"; - } - - revision "2018-06-05" { - description - "Fix bugs in when statements"; - reference "0.10.1"; - } - - revision "2018-02-19" { - description - "Add PIM and IGMP to network instance"; - reference "0.10.0"; - } - - revision "2017-12-13" { - description - "Fix incorrect constraint on SR and MPLS containers"; - reference "0.9.0"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes"; - reference "0.8.1"; - } - - revision "2017-02-28" { - description - "Add OSPFv2 to network instance"; - reference "0.8.0"; - } - - revision "2017-01-26" { - description - "Add policy forwarding to network instance"; - reference "0.7.0"; - } - - revision "2017-01-13" { - description - "Add AFT to the network instance"; - reference "0.6.0"; - } - - revision "2016-12-15" { - description - "Add segment routing to network instance"; - reference "0.5.0"; - } - - revision "2016-11-10" { - description - "Add IS-IS to OpenConfig network instance"; - reference "0.4.1"; - } - - revision "2016-10-12" { - description - "Update table connections"; - reference "0.4.0"; - } - - revision "2016-09-28" { - description - "Change L2 instance to submodule; add MAC table"; - reference "0.3.0"; - } - - revision "2016-08-11" { - description - "Resolve repeated container names in routing protocols"; - reference "0.2.3"; - } - - revision "2016-07-08" { - description - "Updated with refactored routing protocol models"; - reference "0.2.1"; - } - - revision "2016-03-29" { - description - "Initial revision"; - reference "0.2.0"; - } - - revision "2015-10-18" { - description - "Initial revision"; - reference "0.1.0"; - } - - typedef network-instance-ref { - type leafref { - path "/network-instances/network-instance/config/name"; - } - description - "A re-usable type that can be referenced within other - modules that references a network instance."; - } - - grouping network-instance-top { - description - "Top-level grouping containing a list of network instances."; - - container network-instances { - description - "The L2, L3, or L2+L3 forwarding instances that are - configured on the local system"; - - list network-instance { - key "name"; - - description - "Network instances configured on the local system"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "A unique name identifying the network instance"; - } - - uses l2ni-instance { - when "config/type = 'L2VSI' or config/type = 'L2P2P'" + - " or config/type = 'L2L3' or config/type = 'DEFAULT_INSTANCE'" { - description - "Layer 2 configuration parameters included when - a network instance is a Layer 2 instance or a - combined L2L3 instance"; - } - } - - container config { - description - "Configuration parameters relating to a network - instance"; - uses network-instance-config; - uses network-instance-type-dependent-config; - } - - - container state { - config false; - description - "Operational state parameters relating to a network - instance"; - uses network-instance-config; - uses network-instance-type-dependent-config; - uses network-instance-state; - } - - container encapsulation { - when "../config/type != 'DEFAULT_INSTANCE'" { - description - "Only allow the encapsulation of the instance to be - set when the instance is not the default instance"; - } - description - "Configuration parameters relating to the encapsulation - used for the network instance"; - - container config { - description - "Configuration parameters relating to the encapsulation - of the network instance"; - - uses encapsulation-config; - - uses l2ni-encapsulation-config { - when "../../config/type = 'L2VSI' or ../../config/type = 'L2P2P' - or ../../config/type = 'L2L3'" { - description - "Only allow L2 encapsulations to be set - when the instance is of a type that supports - L2"; - } - } - } - - container state { - config false; - description - "State parameters relating to the encapsulation of - the network instance"; - uses encapsulation-config; - - uses l2ni-encapsulation-config { - when "../../config/type = 'L2VSI' or ../../config/type = 'L2P2P' - or ../../config/type = 'L2L3'" { - description - "Only allow L2 encapsulations to be set - when the instance is of a type that supports - L2"; - } - } - } - } - - container inter-instance-policies { - description - "Policies dictating how RIB or FIB entries are imported - to and exported from this instance"; - - uses oc-rpol:apply-policy-group; - } - - container table-connections { - description - "Policies dictating how RIB or FIB entries are propagated - between tables"; - - list table-connection { - key "src-protocol dst-protocol address-family"; - - description - "A list of connections between pairs of routing or - forwarding tables, the leaking of entries between - which is specified by the import policy. - - A connection connecting a source table to a destination - table implies that routes that match the policy specified - for the connection are available for the destination - protocol to advertise, or match within its policies."; - - leaf src-protocol { - type leafref { - path "../config/src-protocol"; - } - description - "The name of the protocol associated with the table - which should be utilised as the source of forwarding - or routing information"; - } - - leaf dst-protocol { - type leafref { - path "../config/dst-protocol"; - } - description - "The table to which routing entries should be - exported"; - } - - leaf address-family { - type leafref { - path "../config/address-family"; - } - description - "The address family associated with the connection"; - } - - container config { - description - "Configuration parameters relating to the connection - between tables"; - uses inter-table-policies-config; - } - container state { - config false; - description - "State parameters relating to the connection between - tables"; - uses inter-table-policies-config; - } - } - } - - container interfaces { - description - "The interfaces that are associated with this network - instance"; - - list interface { - key "id"; - unique "config/interface config/subinterface"; - - description - "An interface associated with the network instance"; - - leaf id { - type leafref { - path "../config/id"; - } - description - "A reference to an identifier for this interface which - acts as a key for this list"; - } - - container config { - description - "Configuration parameters relating to the associated - interface"; - uses instance-interfaces-config; - } - - container state { - config false; - description - "Operational state parameters relating to the - associated interface"; - - uses instance-interfaces-config; - uses instance-interfaces-state; - } - } - } - - uses oc-ni-l3:l3ni-route-limit-structural { - when "type = 'L3VRF' or type = 'L2L3'" { - description - "Layer 3 VRF or L2/L3 instances can have route limits - applied. This is not supported for the default instance."; - } - } - - container tables { - description - "The routing tables that are managed by this network - instance"; - - list table { - key "protocol address-family"; - - description - "A network instance manages one or more forwarding or - routing tables. These may reflect a Layer 2 forwarding - information base, a Layer 3 routing table, or an MPLS - LFIB. - - The table populated by a protocol within an instance is - identified by the protocol identifier (e.g., BGP, IS-IS) - and the address family (e.g., IPv4, IPv6) supported by - that protocol. Multiple instances of the same protocol - populate a single table -- such that - a single IS-IS or OSPF IPv4 table exists per network - instance. - - An implementation is expected to create entries within - this list when the relevant protocol context is enabled. - i.e., when a BGP instance is created with IPv4 and IPv6 - address families enabled, the protocol=BGP, - address-family=IPv4 table is created by the system."; - - leaf protocol { - type leafref { - path "../config/protocol"; - } - description - "A reference to the protocol that populates - the table"; - } - - leaf address-family { - type leafref { - path "../config/address-family"; - } - description - "A reference to the address-family that the - table represents"; - } - - container config { - description - "Configuration parameters relating to the - table"; - uses table-config; - } - - container state { - config false; - description - "State parameters related to the table"; - uses table-config; - } - } - } - - container connection-points { - description - "The set of connection points within a forwarding - instance"; - - list connection-point { - key "connection-point-id"; - - description - "A connection point within a Layer 2 network instance. - Each connection-point consists of a set of interfaces - only one of which is active at any one time. Other than - the specification of whether an interface is local - (i.e., exists within this network-instance), or remote, - all configuration and state parameters are common"; - - leaf connection-point-id { - type leafref { - path "../config/connection-point-id"; - } - description - "A locally significant reference for the - connection-point"; - } - - container config { - description - "Configuration parameters relating to a Layer 2 - network instance connection point"; - uses instance-connection-point-config; - } - container state { - config false; - description - "Operational state parameters relating to a Layer 2 - network instance connection point"; - - uses instance-connection-point-config; - uses instance-connection-point-state; - } - - container endpoints { - when "../../../config/type = 'L2P2P' " + - "or ../../../config/type = 'L2VSI'" { - description - "Configuration parameters to associate interfaces - into a common group for use in Layer 2 network - instances"; - } - - description - "The set of endpoints which are grouped within the - connection point"; - - list endpoint { - key "endpoint-id"; - - description - "A list of the endpoints (interfaces or remote - connection points that can be used for this - connection point). The active endpoint is selected - based on the precedence that it is configured - with"; - - leaf endpoint-id { - type leafref { - path "../config/endpoint-id"; - } - description - "A pointer to the configured identifier for the - endpoint"; - } - - container config { - description - "Configuration parameters relating to the - endpoint"; - uses instance-endpoint-config; - } - container state { - config false; - description - "Operational state parameters relating to the - endpoint"; - uses instance-endpoint-config; - uses instance-endpoint-state; - } - - container local { - when "../config/type = 'LOCAL'" { - description - "Only include the local configuration when - the endpoint is specified to be local to - the network element"; - } - - description - "Configuration and operational state parameters - relating to a local interface"; - - container config { - description - "Configuration parameters relating to a local - endpoint"; - uses instance-endpoint-local-config; - } - - container state { - config false; - description - "Operational state parameters relating to a - local endpoint"; - uses instance-endpoint-local-config; - } - } - - container remote { - when "../config/type = 'REMOTE'" { - description - "Only include the remote configuration when - the endpoint is specified to be remote to - the network element"; - } - - description - "Configuration and operational state parameters - relating to a remote interface"; - - container config { - description - "Configuration parameters relating to a remote - endpoint"; - uses instance-endpoint-remote-config; - } - - container state { - config false; - description - "Operational state parameters relating to - a remote endpoint"; - uses instance-endpoint-remote-config; - } - } - } - } - } - } - - uses oc-mpls:mpls-top { - when "config/type = 'DEFAULT_INSTANCE'" { - description - "MPLS configuration is only valid within the default - network instance."; - } - } - - uses oc-sr:sr-top { - when "config/type = 'DEFAULT_INSTANCE'" { - description - "Segment routing configuration is only valid with the default - network instance."; - } - } - - uses oc-vlan:vlan-top; - - uses oc-pf:policy-forwarding-top; - - uses oc-aft:aft-top; - - container protocols { - description - "The routing protocols that are enabled for this - network-instance."; - - list protocol { - key "identifier name"; - - description - "A process (instance) of a routing protocol. Some - systems may not support more than one instance of - a particular routing protocol"; - - leaf identifier { - type leafref { - path "../config/identifier"; - } - description - "The protocol name for the routing or forwarding - protocol to be instantiated"; - } - - leaf name { - type leafref { - path "../config/name"; - } - description - "An operator-assigned identifier for the routing - or forwarding protocol. For some processes this - leaf may be system defined."; - } - - container config { - description - "Configuration parameters relating to the routing - protocol instance"; - - uses protocols-config; - } - - container state { - config false; - description - "State parameters relating to the routing protocol - instance"; - - uses protocols-config; - uses protocols-state; - } - - uses oc-loc-rt:local-static-top { - when "config/identifier = 'STATIC'" { - description - "Include static route parameters only when the - protocol is set to static"; - } - description - "Configuration and state parameters relating to - static routes"; - } - - uses oc-loc-rt:local-aggregate-top { - when "config/identifier = 'LOCAL_AGGREGATE'" { - description - "Include aggregate route parameters only when the - protocol is set to aggregate"; - } - description - "Configuration and state parameters relating to - locally generated aggregate routes"; - } - - uses oc-bgp:bgp-top { - when "config/identifier = 'BGP'" { - description - "Include BGP parameters only when the protocol - is of type BGP"; - } - description - "Configuration and state parameters relating to - Border Gateway Protocol (BGP)"; - } - - uses oc-ospfv2:ospfv2-top { - when "config/identifier = 'OSPF'" { - description - "Include OSPFv2 parameters only when the protocol - is of type OSPFv2"; - } - } - - uses oc-isis:isis-top { - when "config/identifier = 'ISIS'" { - description - "Include IS-IS configuration when the protocol is of type - IS-IS"; - } - description - "Configuration and state parameters relating to Intermediate - System to Intermediate System (IS-IS)."; - } - - uses oc-pim:pim-top { - when "config/identifier = 'PIM'" { - description - "Include PIM configuration when the protocol is of type - PIM"; - } - description - "Configuration and state parameters relating to Protocol - Indepdendent Multicast (PIM)."; - } - - uses oc-igmp:igmp-top { - when "config/identifier = 'IGMP'" { - description - "Include IGMP configuration when the protocol is of type - IGMP"; - } - description - "Configuration and state parameters relating to the Internet - Group Management Protocol (IGMP)."; - } - } - } - } - } - } - - grouping network-instance-type-dependent-config { - description - "Type dependent network instance configuration"; - - uses oc-ni-l3:l3ni-instance-common-config { - when "type = 'L3VRF' or type = 'L2L3'" { - description - "Layer 3 VRF configuration parameters included when a - network instance is a L3VRF or combined L2L3 instance"; - } - } - - uses l2ni-instance-common-config { - when "type = 'L2VSI' or type = 'L2P2P'" + - " or type = 'L2L3'" { - description - "Layer 2 configuration parameters included when - a network instance is a Layer 2 instance or a - combined L2L3 instance"; - } - } - } - - grouping instance-endpoint-config { - description - "Configuration data relating to an forwarding-instance - endpoint"; - - leaf endpoint-id { - type string; - description - "An identifier for the endpoint"; - } - - leaf precedence { - type uint16; - description - "The precedence of the endpoint - the lowest precendence - viable endpoint will be utilised as the active endpoint - within a connection"; - } - - leaf type { - type identityref { - base "oc-ni-types:ENDPOINT_TYPE"; - } - description - "The type of endpoint that is referred to by the current - endpoint"; - } - - } - - grouping instance-endpoint-local-config { - description - "Configuration parameters relating to an endpoint that is local - to the current system"; - - uses oc-if:interface-ref-common; - } - - grouping instance-endpoint-remote-config { - description - "Configuration parameters relating to an endpoint that is - remote from the local system"; - leaf remote-system { - type inet:ip-address; - description - "The IP address of the device which hosts the - remote end-point"; - } - - leaf virtual-circuit-identifier { - type uint32; - description - "The virtual-circuit identifier that identifies the - connection at the remote end-point"; - } - } - - grouping instance-endpoint-state { - description - "Operational state data relating to a forwarding-instance - endpoint"; - leaf active { - type boolean; - description - "When the backup endpoint is active, the value of this - parameter is set to true"; - } - } - - grouping instance-connection-point-config { - description - "Configuration data relating to a forwarding-instance - connection point"; - - leaf connection-point-id { - type string; - description - "An identifier for a connection point"; - } - } - - grouping instance-connection-point-state { - description - "Operational state data relating to a forwarding-instance - connection point"; - } - - grouping table-config { - description - "Config parameters relating to an L2/L2.5/L3 table that exists - within a network instance"; - - leaf protocol { - type leafref { - path "../../../../protocols/protocol/config/identifier"; - } - description - "Reference to the protocol that the table is associated with."; - } - - leaf address-family { - type identityref { - base oc-types:ADDRESS_FAMILY; - } - description - "The address family (IPv4, IPv6) of the table's entries"; - } - } - - grouping instance-interfaces-config { - description - "Configuration parameters related to an interface associated - with the network instance"; - - leaf id { - type string; - description - "A unique identifier for this interface - this is expressed - as a free-text string"; - } - - uses oc-if:interface-ref-common; - - leaf-list associated-address-families { - type identityref { - base oc-types:ADDRESS_FAMILY; - } - description - "The address families on the subinterface which are to be - associated with this network instance. When this leaf-list - is empty and the network instance requires Layer 3 information - the address families for which the network instance is - enabled should be imported. If the value of this leaf-list - is specified then the association MUST only be made for - those address families that are included in the list."; - } - } - - grouping instance-interfaces-state { - description - "Operational state parameters relating to an interface - associated with this network instance"; - } - - grouping inter-table-policies-config { - description - "Configuration entries that relate to how RIB or FIB entries - are propagated between tables within the same network - instance"; - - leaf src-protocol { - type leafref { - // we are at table-connections/table-connection/config/. - path "../../../../tables/table/config/protocol"; - } - description - "The source protocol for the table connection"; - } - - leaf address-family { - type leafref { - // we are at table-connections/table-connection/config/. - path "../../../../tables/" + - "table[protocol=current()/../src-protocol]/" + - "config/address-family"; - } - description - "The address family associated with the connection. This - must be defined for the source protocol. The target - address family is implicitly defined by the address family - specified for the source protocol."; - } - - leaf dst-protocol { - type leafref { - path "../../../../tables/table/config/protocol"; - } - description - "The destination protocol for the table connection"; - } - - uses oc-rpol:apply-policy-import-config; - } - - grouping network-instance-config { - description - "Configuration parameters relating to a top-level network - instance"; - - leaf name { - type string; - description - "An operator-assigned unique name for the forwarding - instance"; - } - - leaf type { - type identityref { - base "oc-ni-types:NETWORK_INSTANCE_TYPE"; - } - description - "The type of network instance. The value of this leaf - indicates the type of forwarding entries that should be - supported by this network instance"; - } - - leaf enabled { - type boolean; - description - "Whether the network instance should be configured to be - active on the network element"; - } - - leaf description { - type string; - description - "A free-form string to be used by the network operator to - describe the function of this network instance"; - } - - leaf router-id { - type yang:dotted-quad; - description - "A identifier for the local network instance - typically - used within associated routing protocols or signalling - routing information in another network instance"; - } - - leaf route-distinguisher { - type oc-ni-types:route-distinguisher; - description - "The route distinguisher that should be used for the local - VRF or VSI instance when it is signalled via BGP."; - } - } - - grouping network-instance-state { - description - "Operational state parameters relating to a network instance"; - } - - grouping protocols-config { - description - "Configuration parameters relating to a generic protocol - instance within a network instance"; - - leaf identifier { - type identityref { - base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; - } - description - "The protocol identifier for the instance"; - } - - leaf name { - type string; - description - "A unique name for the protocol instance"; - } - - leaf enabled { - type boolean; - description - "A boolean value indicating whether the local protocol - instance is enabled."; - } - - leaf default-metric { - type uint32; - description - "The default metric within the RIB for entries that are - installed by this protocol instance. This value may - be overridden by protocol specific configuration options. - The lower the metric specified the more preferable the RIB - entry is to be selected for use within the network instance. - Where multiple entries have the same metric value then these - equal cost paths should be treated according to the specified - ECMP path selection behaviour for the instance"; - } - } - - grouping protocols-state { - description - "Operational state parameters relating to a protocol instance"; - } - - grouping instance-interface-association-config { - description - "Grouping containing leaves that are to be augmented into an - interface or subinterface to include mapping to a network - instance"; - - leaf network-instance { - type leafref { - path "/network-instances/network-instance/name"; - } - description - "The network instance that this interface is associated - with"; - } - } - - grouping encapsulation-config { - description - "Type agnostic configuration parameters relating to the - encapsulation of the network instance"; - - leaf encapsulation-type { - type identityref { - base oc-ni-types:ENCAPSULATION; - } - description - "The on-the-wire encapsulation that should be used when - sending traffic from this network instance"; - } - - // rjs: This is left here as I suspect that this can - // be used in EVPN. Need to validate implementations, otherwise - // move to L3. (TODO) - leaf label-allocation-mode { - type identityref { - base oc-ni-types:LABEL_ALLOCATION_MODE; - } - description - "The label allocation mode to be used for L3 entries - in the network instance"; - } - } - - uses network-instance-top; -} diff --git a/src/plugins/yang/openconfig/openconfig-openflow-types.yang b/src/plugins/yang/openconfig/openconfig-openflow-types.yang deleted file mode 100644 index 41c5dc0..0000000 --- a/src/plugins/yang/openconfig/openconfig-openflow-types.yang +++ /dev/null @@ -1,93 +0,0 @@ -module openconfig-openflow-types { - - yang-version "1"; - - namespace "http://openconfig.net/yang/openflow/types"; - - prefix "openflow-types"; - - import openconfig-extensions { prefix oc-ext; } - - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines types related to the Openflow configuration - and operational state model."; - - oc-ext:openconfig-version "0.1.1"; - - revision "2017-08-24" { - description - "Minor formatting fixes.Initial revision"; - reference "0.1.1"; - } - - revision "2017-06-01" { - description - "Initial revision"; - reference "0.1.0"; - } - - - typedef failure-mode { - type enumeration { - enum SECURE { - description - "Packets and messages destined to the controllers are - dropped. Flow entries continue to expire according to - their timeouts."; - } - enum STANDALONE { - description - "Processes all packets using the OFPP_NORMAL reserved - port. The switch acts as a legacy Ethernet switch or - router."; - } - } - description - "Type to define Openflow failure mode."; - } - - typedef transport { - type enumeration { - enum TCP { - description - "Transmission Control Protocol (TCP)."; - } - enum TLS { - description - "Transport Layer Security (TLS)."; - } - } - description - "Type to define Openflow transport protocol."; - } - - typedef auxiliary-id { - type uint8 { - range "0..15"; - } - description - "A Controller may have multiple auxiliary connections as - specified by the Openflow protocol. The main Controller - connection should always have the auxiliary-id set to zero. - All other connections must have an auxiliary-id different - from 0."; - } - - typedef datapath-id { - type string { - pattern '^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}$'; - } - description - "The datapath-id type represents an OpenFlow - datapath identifier. The lower 48-bits are for - a MAC address, while the upper 16-bits are - implementer-defined."; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-openflow.yang b/src/plugins/yang/openconfig/openconfig-openflow.yang deleted file mode 100644 index ab7a433..0000000 --- a/src/plugins/yang/openconfig/openconfig-openflow.yang +++ /dev/null @@ -1,314 +0,0 @@ -module openconfig-openflow { - - yang-version "1"; - - namespace "http://openconfig.net/yang/openflow"; - - prefix "openflow"; - - import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-openflow-types { prefix of-types; } - import openconfig-system { prefix oc-sys; } - - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data for - Openflow."; - - oc-ext:openconfig-version "0.1.1"; - - revision "2017-08-24" { - description - "Minor formatting fixes.Initial revision"; - reference "0.1.1"; - } - - revision "2017-06-01" { - description - "Initial revision"; - reference "0.1.0"; - } - - grouping openflow-controller-config { - description - "Openflow controller config"; - - leaf name { - type string; - description "Name of this Openflow controller. All connections - for the same controller need to have the same name."; - } - } - - grouping openflow-controller-state { - description - "Openflow controller state"; - } - - grouping openflow-controllers-top { - description - "Top-level for the Openflow controllers model"; - - container controllers { - description - "Container for the Openflow controllers model"; - - list controller { - key "name"; - - description - "The Openflow Switch connects to all Openflow controllers - configured"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "The name identifies the controller."; - } - - container config { - description - "Container for the Openflow controller config."; - - uses openflow-controller-config; - } - - container state { - config false; - - description - "Container for the Openflow controller state."; - - uses openflow-controller-config; - uses openflow-controller-state; - } - - uses openflow-connections-top; - } - } - } - - - grouping openflow-connections-config { - description - "Configuration data for OpenFlow controller connections"; - - leaf aux-id { - type of-types:auxiliary-id; - description - "Controller auxiliary ID. Must be 0 for the main controller. - One controller may have multiple auxiliary connections as - specified by the Openflow protocol. Besides configuring the - main controller, it is also possible to configure auxiliary - connections. The main controller must have the aux-id - set to zero. All others must have an aux-id different - from 0."; - } - - leaf priority { - type uint8; - description - "Optional value for servicing auxiliary connections with - different priorities."; - } - - leaf address { - type oc-inet:ip-address; - description - "The IP address of the controller."; - } - - leaf port { - type oc-inet:port-number; - default 6653; - description - "Controller port to use."; - } - - leaf transport { - type of-types:transport; - default TCP; - description - "Controller transport protocol used."; - } - - leaf certificate-id { - type string; - description - "Certificate ID is used for TLS connections. When installed, - certificates are associated with an ID. This ID specifies the - certificate to use in a TLS connection."; - } - - leaf source-interface { - type oc-if:base-interface-ref; - description - "Optionally specify the source interface for the - controller connection."; - } - } - - grouping openflow-connections-state { - description - "Operational state data for OpenFlow controller connections"; - - leaf connected { - type boolean; - description - "When set to true, indicates the connection between the - switch and controller is established."; - } - } - - grouping openflow-connections-top { - description - "Top-level grouping for OpenFlow controller connections"; - - container connections { - description - "Enclosing container for list of controller connections"; - - list connection { - key "aux-id"; - description - "List of connections to the OpenFlow controller. - The Openflow switch always connects to configured Openflow - controllers. Each controller can have more than one - connection, called auxiliary Openflow connections."; - - leaf aux-id { - type leafref { - path "../config/aux-id"; - } - description - "Reference to auxiliary id list key"; - } - - container config { - description - "Configuration data for OpenFlow controller connections"; - - uses openflow-connections-config; - } - - container state { - - config false; - - description - "Operational state data for OpenFlow controller - connections"; - - uses openflow-connections-config; - uses openflow-connections-state; - } - } - } - } - - - grouping openflow-agent-config { - description - "Openflow agent config"; - - leaf datapath-id { - type of-types:datapath-id; - description - "Datapath unique ID. The lower 48-bits are for - a MAC address, while the upper 16-bits are - implementer-defined."; - } - - leaf failure-mode { - type of-types:failure-mode; - description - "Failure mode for Openflow."; - } - - leaf backoff-interval { - type uint32; - units seconds; - description - "Openflow agent connection backoff interval."; - } - - leaf max-backoff { - type uint32; - units seconds; - description - "Openflow agent max backoff time."; - } - - leaf inactivity-probe { - type uint32; - units seconds; - description - "Openflow agent inactivity probe period."; - } - } - - grouping openflow-agent-state { - description - "Openflow agent state"; - } - - grouping openflow-agent-top { - description - "Top-level for the Openflow agent model"; - - container agent { - description - "Container for the Openflow agent model."; - - container config { - description - "Container for the Openflow agent config."; - - uses openflow-agent-config; - } - - container state { - config false; - - description - "Container for the Openflow agent state."; - - uses openflow-agent-config; - uses openflow-agent-state; - } - } - } - - - grouping openflow-top { - description - "Top-level for the Openflow model"; - - container openflow { - description - "Container for Openflow model"; - - - uses openflow-controllers-top; - uses openflow-agent-top; - } - } - - - augment "/oc-sys:system" { - description - "Adding OpenConfig data to the system model"; - - uses openflow-top; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-optical-amplifier.yang b/src/plugins/yang/openconfig/openconfig-optical-amplifier.yang deleted file mode 100644 index 1467148..0000000 --- a/src/plugins/yang/openconfig/openconfig-optical-amplifier.yang +++ /dev/null @@ -1,474 +0,0 @@ -module openconfig-optical-amplifier { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/optical-amplfier"; - - prefix "oc-opt-amp"; - - import openconfig-platform { prefix oc-platform; } - import openconfig-transport-line-common { prefix oc-line-com; } - import openconfig-types { prefix oc-types; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This model describes configuration and operational state data - for optical amplifiers, deployed as part of a transport - line system."; - - oc-ext:openconfig-version "0.4.0"; - - revision "2017-10-02" { - description - "Add support for fiber type profile and physical component - association for amplifier gain blocks."; - reference "0.4.0"; - } - - revision "2017-09-08" { - description - "Correct bug with OSC interfaces"; - reference "0.3.1"; - } - - revision "2017-07-08" { - description - "Add monitor port type and refs to hw ports, "; - reference "0.3.0"; - } - - revision "2017-03-28" { - description - "Added min/max/avg stats, status for media channels, OCM, APS"; - reference "0.2.0"; - } - - revision "2016-03-31" { - description - "Initial public release"; - reference "0.1.0"; - } - - - // extension statements - - // feature statements - - // identity statements - - identity OPTICAL_AMPLIFIER_TYPE { - description - "Type definition for different types of optical amplifiers"; - } - - identity EDFA { - base OPTICAL_AMPLIFIER_TYPE; - description - "Erbium doped fiber amplifer (EDFA)"; - } - - identity FORWARD_RAMAN { - base OPTICAL_AMPLIFIER_TYPE; - description - "Forward pumping Raman amplifier"; - } - - identity BACKWARD_RAMAN { - base OPTICAL_AMPLIFIER_TYPE; - description - "Backward pumping Raman amplifier"; - } - - identity HYBRID { - base OPTICAL_AMPLIFIER_TYPE; - description - "Hybrid backward pumping Raman + EDFA amplifier"; - } - - identity GAIN_RANGE { - description - "Base type for expressing the gain range for a switched gain - amplifier. The gain range is expressed as a generic setting, - e.g., LOW/MID/HIGH. The actual db range will be determined - by the implementation."; - } - - identity LOW_GAIN_RANGE { - base GAIN_RANGE; - description - "LOW gain range setting"; - } - - identity MID_GAIN_RANGE { - base GAIN_RANGE; - description - "MID gain range setting"; - } - - identity HIGH_GAIN_RANGE { - base GAIN_RANGE; - description - "HIGH gain range setting"; - } - - identity FIXED_GAIN_RANGE { - base GAIN_RANGE; - description - "Fixed or non-switched gain amplfier"; - } - - identity OPTICAL_AMPLIFIER_MODE { - description - "Type definition for different types of optical amplifier - operating modes"; - } - - identity CONSTANT_POWER { - base OPTICAL_AMPLIFIER_MODE; - description - "Constant power mode"; - } - - identity CONSTANT_GAIN { - base OPTICAL_AMPLIFIER_MODE; - description - "Constant gain mode"; - } - - - identity FIBER_TYPE_PROFILE { - description - "Type definition for different profiles of fiber types"; - } - - identity DSF { - base FIBER_TYPE_PROFILE; - description - "Dispersion shifted fiber"; - } - - identity LEAF { - base FIBER_TYPE_PROFILE; - description - "Large effective area fiber"; - } - - identity SSMF { - base FIBER_TYPE_PROFILE; - description - "Standard single mode fiber"; - } - - identity TWC { - base FIBER_TYPE_PROFILE; - description - "True wave classic"; - } - - identity TWRS { - base FIBER_TYPE_PROFILE; - description - "True wave reduced slope"; - } - - // grouping statements - - grouping optical-amplifier-config { - description - "Configuration data for optical amplifiers"; - - leaf name { - type string; - description - "User-defined name assigned to identify a specific amplifier - in the device"; - } - - leaf type { - type identityref { - base OPTICAL_AMPLIFIER_TYPE; - } - description - "Type of the amplifier"; - } - - leaf target-gain { - type decimal64 { - fraction-digits 2; - range 0..max; - } - units dB; - description - "Positive gain applied by the amplifier."; - } - - leaf target-gain-tilt { - type decimal64 { - fraction-digits 2; - } - units dB; - description - "Gain tilt control"; - } - - leaf gain-range { - type identityref { - base GAIN_RANGE; - } - description - "Selected gain range. The gain range is a platform-defined - value indicating the switched gain amplifier setting"; - } - - leaf amp-mode { - type identityref { - base OPTICAL_AMPLIFIER_MODE; - } - description - "The operating mode of the amplifier"; - } - - leaf target-output-power { - type decimal64 { - fraction-digits 2; - } - units dBm; - description - "Output optical power of the amplifier."; - } - - leaf enabled { - type boolean; - description - "Turns power on / off to the amplifiers gain module."; - } - - leaf fiber-type-profile { - type identityref { - base FIBER_TYPE_PROFILE; - } - description - "The fiber type profile specifies details about the - fiber type which are needed to accurately determine - the gain and perform efficient amplification. This is - only needed for Raman type amplifiers."; - } - - } - - grouping optical-amplifier-state { - description - "Operational state data for optical amplifiers"; - - leaf component { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to the system-supplied physical component that - the amplifier gain block is contained within. Multiple - amplifier gain blocks may be contained within the same - physical component."; - } - - leaf ingress-port { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to system-supplied name of the amplifier ingress - port. This leaf is only valid for ports of type INGRESS."; - } - - leaf egress-port { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to system-supplied name of the amplifier egress - port. This leaf is only valid for ports of type EGRESS."; - } - - container actual-gain { - description - "The actual gain applied by the amplifier in units of - 0.01dB. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dB; - } - - container actual-gain-tilt { - description - "The actual tilt applied by the amplifier in units of - 0.01dB. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dB; - } - - container input-power-total { - description - "The total input optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container input-power-c-band { - description - "The C band (consisting of approximately 191 to 195 THz or - 1530nm to 1565 nm) input optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container input-power-l-band { - description - "The L band (consisting of approximately 184 to 191 THz or - 1565 to 1625 nm) input optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container output-power-total { - description - "The total output optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container output-power-c-band { - description - "The C band (consisting of approximately 191 to 195 THz or - 1530nm to 1565 nm)output optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container output-power-l-band { - description - "The L band (consisting of approximately 184 to 191 THz or - 1565 to 1625 nm)output optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container laser-bias-current { - description - "The current applied by the system to the transmit laser to - achieve the output power. The current is expressed in mA - with up to two decimal precision. If avg/min/max statistics - are not supported, just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-mA; - } - - container optical-return-loss { - description - "The optical return loss (ORL) is the ratio of the light - reflected back into the port to the light launched out of - the port. ORL is in units of 0.01dBm. If avg/min/max - statistics are not supported, just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - } - - grouping optical-amplifier-top { - description - "Top-level grouping for optical amplifier data"; - - container optical-amplifier { - description - "Enclosing container for amplifiers and supervisory channels"; - - container amplifiers { - description - "Enclosing container for list of amplifiers"; - - list amplifier { - key "name"; - description - "List of optical amplifiers present in the device"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the name of the amplifier"; - } - - container config { - description - "Configuration data for the amplifier"; - - uses optical-amplifier-config; - } - - container state { - - config false; - - description - "Operational state data for the amplifier"; - - uses optical-amplifier-config; - uses optical-amplifier-state; - } - } - } - - container supervisory-channels { - description - "Enclosing container for list of supervisory channels"; - - list supervisory-channel { - key "interface"; - description - "List of supervisory channels"; - - leaf interface { - type leafref { - path "../config/interface"; - } - description - "Reference to the interface of the supervisory channel"; - } - - uses oc-line-com:optical-osc-top; - } - } - } - } - - // data definition statements - - uses optical-amplifier-top; - - -} diff --git a/src/plugins/yang/openconfig/openconfig-ospf-policy.yang b/src/plugins/yang/openconfig/openconfig-ospf-policy.yang deleted file mode 100644 index 35b915a..0000000 --- a/src/plugins/yang/openconfig/openconfig-ospf-policy.yang +++ /dev/null @@ -1,188 +0,0 @@ -module openconfig-ospf-policy { - yang-version "1"; - - namespace "http://openconfig.net/yang/ospf-policy"; - - prefix "oc-ospf-pol"; - - import openconfig-routing-policy { prefix "oc-rpol"; } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-ospf-types { prefix "oc-ospf-types"; } - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines extensions to the OpenConfig policy - model to add extensions for OSPF. This module is intended - to be generic for both OSPFv2 and OSPFv3."; - - oc-ext:openconfig-version "0.1.2"; - - revision "2018-06-05" { - description - "Bug fixes in when statements in lsdb"; - reference "0.1.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "0.1.1"; - } - - revision "2016-08-22" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping ospf-match-config { - description - "Configuration parameters for OSPF match conditions"; - - leaf area-eq { - type oc-ospf-types:ospf-area-identifier; - description - "Match prefixes which are within a particular OSPF area"; - } - } - - grouping ospf-match-conditions { - description - "Match conditions that are added by OSPF"; - - container ospf-conditions { - description - "Match conditions specific to OSPF"; - - container config { - description - "Configuration parameters relating to OSPF match conditions"; - - uses ospf-match-config; - } - - container state { - config false; - description - "Operational state parameters relating to OSPF match conditions"; - - uses ospf-match-config; - } - } - } - - grouping ospf-actions-config { - description - "Configuration parameters for OSPF policy actions"; - - leaf set-area { - type oc-ospf-types:ospf-area-identifier; - description - "Set the area for the matched route. This action is typically - used when importing prefixes into OSPF, such that a route can - be imported into a specific area within the instance."; - } - } - - grouping ospf-actions-set-metric-config { - description - "Configuration parameters relating to setting the OSPF metric"; - - leaf metric-type { - type enumeration { - enum EXTERNAL_TYPE_1 { - description - "Set the external type 1 metric"; - } - enum EXTERNAL_TYPE_2 { - description - "Set the external type 2 metric"; - } - } - default "EXTERNAL_TYPE_2"; - description - "Specify the type of metric which is to be set by the policy"; - } - - leaf metric { - type oc-ospf-types:ospf-metric; - description - "Set the metric of the routes matching the policy to the value - specified by this leaf."; - } - } - - grouping ospf-actions { - description - "Actions that are added by OSPF to the action framework"; - - container ospf-actions { - description - "Actions specific to OSPF"; - - container config { - description - "Configuration parameters for OSPF actions"; - - uses ospf-actions-config; - } - - container state { - config false; - description - "Operational state parameters for OSPF actions"; - - uses ospf-actions-config; - } - - container set-metric { - description - "Configuration and state parameters relating to manipulating - the OSPF metric"; - - container config { - description - "Configuration parameters relating to setting the OSPF metric"; - uses ospf-actions-set-metric-config; - } - - container state { - config false; - description - "Operational state parameters relating to setting the OSPF - metric"; - - uses ospf-actions-set-metric-config; - } - } - } - } - - // augment the groupings into the routing policy model - - // TODO: discuss whether igp-actions should be used or whether this should - // be removed. - - augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + - "oc-rpol:conditions" { - description - "Add OSPF specific match conditions to the routing policy model"; - uses ospf-match-conditions; - } - - augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + - "oc-rpol:actions" { - description - "Add OSPF specific actions to the routing policy model"; - uses ospf-actions; - } - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-ospf-types.yang b/src/plugins/yang/openconfig/openconfig-ospf-types.yang deleted file mode 100644 index 0544670..0000000 --- a/src/plugins/yang/openconfig/openconfig-ospf-types.yang +++ /dev/null @@ -1,784 +0,0 @@ -module openconfig-ospf-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/ospf-types"; - - prefix "oc-ospf-types"; - - // import some basic types - import ietf-yang-types { prefix "yang"; } - import openconfig-extensions { prefix "oc-ext"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Type definitions for OSPF"; - - oc-ext:openconfig-version "0.1.2"; - - revision "2018-06-05" { - description - "Bug fixes in when statements in lsdb"; - reference "0.1.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "0.1.1"; - } - - revision "2017-02-28"{ - description - "Initial public release of OSPFv2"; - reference "0.1.0"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - // typedefs - typedef ospf-area-identifier { - type union { - type uint32; - type yang:dotted-quad; - } - description - "An identifier for an area with OSPF version 2 or 3. This value - is expressed as either a dotted-quad, or a unsigned 32-bit - number"; - } - - typedef ospf-metric { - type uint16; - description - "A common type that can be utilised to express an OSPF metric"; - } - - typedef sr-sid-type { - type enumeration { - enum LABEL { - description - "When the length of the SR/Label Sub-TLV is specified to be 3, then - the right-most 20-bits represent a label value within the SR/Label - Sub-TLV. When this leaf is set to a value of Label the first-entry - leaf should be interpreted to be an MPLS label."; - } - enum SID { - description - "When the length of the SR/Label Sub-TLV is specified to be 4, then - the value specified in the first-entry leaf should be specified to - be a segment identifier."; - } - } - description - "A common type used to express the type of segment identifier that is - used in LSDB entries relating to segment routing"; - } - - // identities - identity OSPF_LSA_TYPE { - description - "Base identity for an OSPF LSA type. This identity is intended - to be used across both OSPFv2 and OSPFv3. Identity values that - correspond to only one OSPF version are marked as such."; - } - - identity ROUTER_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 1 - ROUTER_LSA. An LSA originated by each router within - the area describing the state and cost of the router's links - in the area."; - reference "RFC2328"; - } - - identity NETWORK_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 2 - NETWORK_LSA. An LSA originated for each broadcast and - non-broadcast multiple access (NBMA) in the area. This LSA is - originated by the designated router."; - reference "RFC2328"; - } - - identity SUMMARY_IP_NETWORK_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 3 - SUMMARY_IP_NETWORK_LSA. An LSA originated by area - border routers describing inter-area destinations. This LSA type - is used when the destination is an IP network"; - reference "RFC2328"; - } - - identity SUMMARY_ASBR_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 4 - SUMMARY_ASBR_LSA. An LSA originated by an area border - router describing inter-area destinations. This LSA type is used - when the destination is an AS boundary router."; - reference "RFC2328"; - } - - identity AS_EXTERNAL_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 5 - AS_EXTERNAL_LSA. This LSA type is used to describe - destinations external to the autonomous system, and is - originated by an AS boundary router (ASBR)."; - reference "RFC2328"; - } - - identity NSSA_AS_EXTERNAL_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 7 - NSSA_AS_EXTERNAL_LSA. This LSA type is used by - systems within a not-so-stubby-area (NSSA) to inject external - prefixes into the LSDB. They are translated to Type 5 LSAs - at an ABR device."; - reference "RFC3101"; - } - - identity OSPFV2_LINK_SCOPE_OPAQUE_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 9 - OSPFV2_LINK_SCOPE_OPAQUE_LSA. This LSA type is used - in OSPFv2 to distribute arbitrary information via the OSPF - protocol. The contents is specific to the application defining - the Opaque Type specified within the LSDB. LSAs with Type 9 have - a scope of the link that they are being transmitted on (and the - associated network or subnetwork)."; - reference "RFC5250"; - } - - identity OSPFV2_AREA_SCOPE_OPAQUE_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 10 - OSPFV2_AREA_SCOPE_OPAQUE_LSA. This LSA type is used - in OSPFv2 to distribute arbitrary information via the OSPF - protocol. The contents is specific to the application defining - the Opaque Type specified within the LSDB. LSAs with Type 10 have - a scope of the area that they are transmitted within."; - reference "RFC5250"; - } - - identity OSPFV2_AS_SCOPE_OPAQUE_LSA { - base "OSPF_LSA_TYPE"; - description - "Type 11 - OSPFV2_AS_SCOPE_OPAQUE_LSA. This LSA type is used - in OSPFv2 to distribute arbitrary information via the OSPF - protocol. The contents is specific to the application defining - the Opaque Type specified within the LSDB. LSAs with Type 11 - have a scope of the autonomous system that they are transmitted - within."; - reference "RFC5250"; - } - - identity ROUTER_LSA_TYPES { - description - "Sub-types of the router LSA"; - } - - identity ROUTER_LSA_P2P { - base "ROUTER_LSA_TYPES"; - description - "The LSA represents a point-to-point connection to another - router"; - } - - identity ROUTER_LSA_TRANSIT_NETWORK { - base "ROUTER_LSA_TYPES"; - description - "The LSA represents a connection to a transit network"; - } - - identity ROUTER_LSA_STUB_NETWORK { - base "ROUTER_LSA_TYPES"; - description - "The LSA represents a connection to a stub network"; - } - - identity ROUTER_LSA_VIRTUAL_LINK { - base "ROUTER_LSA_TYPES"; - description - "The LSA represents a virtual link connection"; - } - - identity OSPF_NEIGHBOR_STATE { - description - "The state of an adjacency between the local system and a remote - device"; - } - - identity DOWN { - base "OSPF_NEIGHBOR_STATE"; - description - "The initial state of a neighbor, indicating that no recent - information has been received from the neighbor."; - reference "RFC2328"; - } - - identity ATTEMPT { - base "OSPF_NEIGHBOR_STATE"; - description - "Utilised for neighbors that are attached to NBMA networks, it - indicates that no information has been recently received from - the neighbor but that Hello packets should be directly sent - to that neighbor."; - reference "RFC2328"; - } - - identity INIT { - base "OSPF_NEIGHBOR_STATE"; - description - "Indicates that a Hello packet has been received from the - neighbor but bi-directional communication has not yet been - established. That is to say that the local Router ID does - not appear in the list of neighbors in the remote system's - Hello packet."; - reference "RFC2328"; - } - - identity TWO_WAY { - base "OSPF_NEIGHBOR_STATE"; - description - "Communication between the local and remote system is - bi-directional such that the local system's Router ID is listed - in the received remote system's Hello packet."; - reference "RFC2328"; - } - - identity EXSTART { - base "OSPF_NEIGHBOR_STATE"; - description - "An adjacency with the remote system is being formed. The local - system is currently transmitting empty database description - packets in order to establish the master/slave relationship for - the adjacency."; - reference "RFC2328"; - } - - identity EXCHANGE { - base "OSPF_NEIGHBOR_STATE"; - description - "The local and remote systems are currently exchanging database - description packets in order to determine which elements of - their local LSDBs are out of date."; - reference "RFC2328"; - } - - identity LOADING { - base "OSPF_NEIGHBOR_STATE"; - description - "The local system is sending Link State Request packets to the - remote system in order to receive the more recently LSAs that - were discovered during the Exchange phase of the procedure - establishing the adjacency."; - reference "RFC2328"; - } - - identity FULL { - base "OSPF_NEIGHBOR_STATE"; - description - "The neighboring routers are fully adjacent such that both - LSDBs are synchronized. The adjacency will appear in Router and - Network LSAs"; - reference "RFC2328"; - } - - identity OSPF_NETWORK_TYPE { - description - "Types of network that OSPF should consider attached to an - interface"; - } - - identity POINT_TO_POINT_NETWORK { - base "OSPF_NETWORK_TYPE"; - description - "A interface that connects two routers."; - reference "RFC2328"; - } - - identity BROADCAST_NETWORK { - base "OSPF_NETWORK_TYPE"; - description - "An interface that supports >2 attached routers which has the - ability to address all connected systems via a single - (broadcast) address."; - } - - identity NON_BROADCAST_NETWORK { - base "OSPF_NETWORK_TYPE"; - description - "An interface that supports >2 attached rotuers which does not - have the ability to address all connected systems with a - broadcast address."; - } - - // rjs TODO: Maybe need p2mp here. - - - identity OSPF_OPAQUE_LSA_TYPE { - description - "This identity is the base used for opaque LSA types. The values - that extend this base are those that are described in the IANA - OSPF Opaque Link-State Advertisements (LSA) Option Types registry"; - } - - identity TRAFFIC_ENGINEERING { - base "OSPF_OPAQUE_LSA_TYPE"; - description - "The Traffic Engineering LSA. This type is used only with area-scope - Opaque LSAs - and is used to describe routers, point-to-point links - and connections to multi-access networks for traffic engineering - purposes."; - reference "RFC3630"; - } - - identity GRACE_LSA { - base "OSPF_OPAQUE_LSA_TYPE"; - description - "Grace LSAs are announced by a system undergoing graceful-restart. - A system that is attempting an OSPF graceful restart announces - Grace-LSAs with a specified grace period, indicating the intention - to have completed an restart within the specified period."; - reference "RFC3623"; - } - - identity ROUTER_INFORMATION { - base "OSPF_OPAQUE_LSA_TYPE"; - description - "The Router Information LSA is used by an OSPFv2 system to announce - optional capabilities of the local system, over and above those that - are included within the OSPF hello message field. The flooding scope - of the LSA can be link-, area-, or AS-wide (i.e., the LSA type can - be 9, 10 or 11)."; - reference "RFC7770"; - } - - identity OSPFV2_EXTENDED_PREFIX { - base "OSPF_OPAQUE_LSA_TYPE"; - description - "The Extended Prefix LSA is used in OSPFv2 to carry a set of attributes - that are to be associated with a prefix that is advertised in OSPF. The - attributes are carried as one or more TLV tuples. The flooding scope - of the LSA can be link-, area-, or AS-wide as specified by the - advertising system. The flooding scope of the LSA may exceed the scope - of the corresponding prefix."; - reference "RFC7684"; - } - - identity OSPFV2_EXTENDED_LINK { - base "OSPF_OPAQUE_LSA_TYPE"; - description - "The Extended Link LSA is used in OSPFv2 to carry a set of attributes - that are to be associated with a link that is advertised in OSPF. The - link attributes are carried as one or more TLV tuples. The flooding - scope of the link LSA is area-local - i.e., it is carried in a Type 10 - opaque LSA."; - reference "RFC7684"; - } - - identity OSPF_TE_LSA_TLV_TYPE { - description - "This identity is the base used for the type field of TLVs that are - included within the Traffic Engineering Opaque LSA."; - } - - identity TE_ROUTER_ADDRESS { - base "OSPF_TE_LSA_TLV_TYPE"; - description - "A stable IP address of the advertising router that is always reachable - if the node has connectivity."; - } - - identity TE_LINK { - base "OSPF_TE_LSA_TLV_TYPE"; - description - "A single link within a traffic engineering topology. A set of sub-TLVs - are carried within this attribute to indicate traffic engineering - characteristics of the link."; - } - - identity TE_ROUTER_IPV6_ADDRESS { - base "OSPF_TE_LSA_TLV_TYPE"; - description - "A stable IPv6 address of the advertising router that is always - reachable if the node has connectivity. This TLV is used only with - OSPFv3"; - reference "RFC5329"; - } - - identity TE_LINK_LOCAL { - base "OSPF_TE_LSA_TLV_TYPE"; - description - "Attributes associated with the local link by the system."; - reference "RFC4203"; - } - - identity TE_NODE_ATTRIBUTE { - base "OSPF_TE_LSA_TLV_TYPE"; - description - "Attributes associted with the local system"; - reference "RFC5786"; - } - - identity TE_OPTICAL_NODE_PROPERTY { - base "OSPF_TE_LSA_TLV_TYPE"; - description - "Attributes associated with the local optical node. A set of sub-TLVs - are carried within this TLV which are used within the GMPLS control - plane when using OSPF"; - } - - identity OSPF_TE_LINK_TLV_TYPE { - description - "This identity is the based used for the type field for sub-TLVs of the - Link TLV of the OSPF Traffic Engineering Opaque LSA"; - } - - identity TE_LINK_TYPE { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE Link Type sub-TLV appears exactly once per OSPF-TE Link - and describes the type of the link"; - } - - identity TE_LINK_ID { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE Link ID sub-TLV appears exactly once per OSPF-TE link and - identifies the remote end of the link."; - } - - identity TE_LINK_LOCAL_IP { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE Local IP specifies a list of the interface addresses of the - local system corresponding to the traffic engineering link."; - } - - identity TE_LINK_REMOTE_IP { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE Remote IP specifies a list of IP addresses of the remote - neighbors associated with the traffic engineering link."; - } - - identity TE_LINK_METRIC { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE Metric specifies the link metric for traffic engineering - purposes"; - } - - identity TE_LINK_MAXIMUM_BANDWIDTH { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE Maximum Bandwidth specifies the maximum bandwidth of the - link that it is associated with."; - } - - identity TE_LINK_MAXIMUM_RESERVABLE_BANDWIDTH { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE Maximum Reservable Bandwidth specifies the maximum - bandwidth that may be reserved on the link in bytes per second"; - } - - identity TE_LINK_UNRESERVED_BANDWIDTH { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE unreserved bandwidth indicates the amount of bandwidth - at each priority level that is currently not reserved"; - } - - identity TE_LINK_ADMIN_GROUP { - base "OSPF_TE_LINK_TLV_TYPE"; - description - "The OSPF-TE administrative group indicates the administrative group - that the is assigned to the interface"; - } - - identity TE_NODE_ATTRIBUTE_TLV_TYPE { - description - "This identity forms the base for sub-TLVs of the Node Attribute TLV - of the Traffic Engineering LSA"; - } - - identity NODE_IPV4_LOCAL_ADDRESS { - base "TE_NODE_ATTRIBUTE_TLV_TYPE"; - description - "The Node Attribute Sub-TLV contains a list of the IPv4 addresses of - the local system"; - } - - identity NODE_IPV6_LOCAL_ADDRESS { - base "TE_NODE_ATTRIBUTE_TLV_TYPE"; - description - "The Node Attribute Sub-TLV contains a list of the IPv6 addresses of - the local system"; - } - - identity GRACE_LSA_TLV_TYPES { - description - "This identity is used as the base for TLVs within the Grace LSA"; - } - - identity GRACE_PERIOD { - base "GRACE_LSA_TLV_TYPES"; - description - "This sub-TLV describes the period for which adjacencies should be - maintained with the restarting system"; - } - - identity GRACE_RESTART_REASON { - base "GRACE_LSA_TLV_TYPES"; - description - "This sub-TLV describes the reason for the OSPF restart of the system - that is restarting"; - } - - identity GRACE_IP_INTERFACE_ADDRESS { - base "GRACE_LSA_TLV_TYPES"; - description - "This sub-TLV specifies the restarting system's IP address on the - interface via which it is advertising the Grace LSA"; - } - - identity RI_LSA_TLV_TYPES { - description - "This identity is used as the base for the TLVs within the Router - Information LSA"; - reference "RFC7770"; - } - - identity RI_INFORMATIONAL_CAPABILITIES { - base "RI_LSA_TLV_TYPES"; - description - "Informational capabilities of the advertising system"; - reference "RFC7770"; - } - - identity RI_FUNCTIONAL_CAPABILITIES { - base "RI_LSA_TLV_TYPES"; - description - "Functional capabilities of the advertising system"; - reference "RFC7770"; - } - - identity RI_NODE_ADMIN_TAG { - base "RI_LSA_TLV_TYPES"; - description - "Operator-defined administrative tags associated with the advertising - system"; - reference "RFC7777"; - } - - identity RI_SR_SID_LABEL_RANGE { - base "RI_LSA_TLV_TYPES"; - description - "SID or Label ranges for use with segment routing when forwarding to - the advertising system"; - reference "draft-ietf-ospf-segment-routing-extensions"; - } - - identity RI_SR_ALGORITHM { - base "RI_LSA_TLV_TYPES"; - description - "The algorithms that are supported for segment routing by the - advertising system"; - reference "draft-ietf-ospf-segment-routing-extensions"; - } - - // will be shared with IS-IS - identity SR_ALGORITHM { - description - "This identity is used as a base for the algorithms that can be - supported for segment routing and are advertised by a system in the RI - LSA"; - } - - identity SPF { - base "SR_ALGORITHM"; - description - "The standard shortest path algorithm based on link metric, - as used by the OSPF protocol"; - } - - identity STRICT_SPF { - base "SR_ALGORITHM"; - description - "The standard shortest path algorithm based on link metric, with the - requirement that all nodes along the path honor the SPF decision. That - is to say that the SPF decision cannot be altered by local policy at - the node"; - } - - identity OSPF_RI_SR_SID_LABEL_TLV_TYPES { - description - "This identity is used as a base for the sub-TLVs of the Segment - Routing SID/Label Range TLV"; - } - - identity SR_SID_LABEL_TLV { - base "OSPF_RI_SR_SID_LABEL_TLV_TYPES"; - description - "A range of SID/Label values used by the local system"; - reference "draft-ietf-ospf-segment-routing-extensions"; - } - - identity OSPFV2_ROUTER_LINK_TYPE { - description - "OSPFv2 Router Link Types as per the IANA registry defined in - RFC2740"; - } - - identity POINT_TO_POINT_LINK { - base "OSPFV2_ROUTER_LINK_TYPE"; - description - "The link is a point-to-point connection to another router"; - } - - identity TRANSIT_NETWORK_LINK { - base "OSPFV2_ROUTER_LINK_TYPE"; - description - "The link is a connection to a transit network"; - } - - identity STUB_NETWORK_LINK { - base "OSPFV2_ROUTER_LINK_TYPE"; - description - "The link is a connection to a stub network"; - } - - identity VIRTUAL_LINK { - base "OSPFV2_ROUTER_LINK_TYPE"; - description - "The link is a virtual connection to another router"; - } - - identity OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE { - description - "Sub-TLVs of the OSPFv2 Extended Prefix LSA as defined by - RFC7684"; - } - - identity EXTENDED_PREFIX_RANGE { - base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE"; - description - "The attributes being described relate to a range of prefixes"; - } - - identity PREFIX_SID { - base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE"; - description - "The TLV describes a Segment Routing Prefix Segment Identifier - associated with a prefix"; - } - - identity SID_LABEL_BINDING { - base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE"; - description - "The TLV describes a binding of a SID to a path to the prefix, - which may have associated path characteristics"; - } - - identity OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE { - description - "Sub-TLV types carried in the SID/Label Binding Sub-TLV of - the Extended Prefix Sub-TLV"; - } - - identity SID_MPLS_LABEL_BINDING { - base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE"; - description - "This sub-TLV indicates a binding between an SR SID and an - MPLS label and must be present in the sub-TLV"; - } - - identity ERO_METRIC { - base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE"; - description - "This sub-TLV indicates the cost of the ERO path being - advertised in the SID/Label TLV"; - } - - identity ERO_PATH { - base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE"; - description - "This sub-TLV indicates the path associated with an ERO - being advertised in the SID/Label TLV"; - } - - identity OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE { - description - "The types of segment included within an ERO Path described - within the SID/Label binding sub-TLV"; - } - - identity IPV4_SEGMENT { - base "OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE"; - description - "The segment is specified as an IPv4 address"; - } - - identity UNNUMBERED_INTERFACE_SEGMENT { - base "OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE"; - description - "The segment is specified as an unnumbered interface of - a remote system"; - } - - identity OSPFV2_EXTENDED_LINK_SUBTLV_TYPE { - description - "Sub-TLVs of the Extended Link TLV for OSPFv2"; - } - - identity ADJACENCY_SID { - base "OSPFV2_EXTENDED_LINK_SUBTLV_TYPE"; - description - "The extended link sub-TLV indicates an Adjacency SID"; - } - - identity MAX_METRIC_TRIGGER { - description - "Triggers which cause the maximum metric to be set for - entities advertised in OSPF"; - } - - identity MAX_METRIC_ON_SYSTEM_BOOT { - base "MAX_METRIC_TRIGGER"; - description - "Set the maximum metric when the system boots."; - } - - identity MAX_METRIC_INCLUDE { - description - "Entities that may optionally be included when advertising - the maximum metric."; - } - - identity MAX_METRIC_INCLUDE_STUB { - base "MAX_METRIC_INCLUDE"; - description - "Include stub networks when advertising the maximum metric."; - } - - identity MAX_METRIC_INCLUDE_TYPE2_EXTERNAL { - base "MAX_METRIC_INCLUDE"; - description - "Include OSPF Type 2 external routes when advertising - the maximum metric."; - } -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang b/src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang deleted file mode 100644 index f2454c0..0000000 --- a/src/plugins/yang/openconfig/openconfig-ospfv2-area-interface.yang +++ /dev/null @@ -1,472 +0,0 @@ -submodule openconfig-ospfv2-area-interface { - - belongs-to openconfig-ospfv2 { - prefix "oc-ospfv2"; - } - - import ietf-yang-types { prefix "yang"; } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-types { prefix "oc-types"; } - import openconfig-interfaces { prefix "oc-if"; } - import openconfig-ospf-types { prefix "oc-ospf-types"; } - - // include common submodule - include openconfig-ospfv2-common; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule provides OSPFv2 configuration and operational - state parameters that are specific to the area context"; - - oc-ext:openconfig-version "0.1.2"; - - revision "2018-06-05" { - description - "Bug fixes in when statements in lsdb"; - reference "0.1.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "0.1.1"; - } - - revision "2017-02-28"{ - description - "Initial public release of OSPFv2"; - reference "0.1.0"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping ospfv2-area-interface-config { - description - "Configuration parameters for an OSPF interface"; - - leaf id { - type string; - description - "An operator-specified string utilised to uniquely - reference this interface"; - } - - leaf network-type { - type identityref { - base "oc-ospf-types:OSPF_NETWORK_TYPE"; - } - description - "The type of network that OSPFv2 should use for the specified - interface."; - } - - leaf priority { - type uint8; - description - "The local system's priority to become the designated - router"; - } - - leaf multi-area-adjacency-primary { - type boolean; - default true; - description - "When the specified interface is included in more than one - area's configuration, this leaf marks whether the area should - be considered the primary (when the value is true). In the - case that this value is false, the area is considered a - secondary area."; - } - - leaf authentication-type { - type string; - // rjs TODO: discuss with bogdanov@ what the approach for auth - // links should be. - description - "The type of authentication that should be used on this - interface"; - } - - leaf metric { - type oc-ospf-types:ospf-metric; - description - "The metric for the interface"; - } - - leaf passive { - type boolean; - description - "When this leaf is set to true, the interface should be - advertised within the OSPF area but OSPF adjacencies should - not be established over the interface"; - } - - leaf hide-network { - type boolean; - description - "When this leaf is set to true, the network connected to - the interface should be hidden from OSPFv2 advertisements - per the procedure described in RFC6860."; - reference - "RFC6860 - Hiding Transit-Only Networks in OSFF"; - } - } - - grouping ospfv2-area-interface-timers-config { - description - "Configuration parameters relating to per-interface OSPFv2 - timers"; - - leaf dead-interval { - type uint32; - units seconds; - description - "The number of seconds that the local system should let - elapse before declaring a silent router down"; - reference "RFC2328"; - } - - leaf hello-interval { - type uint32; - units seconds; - description - "The number of seconds the local system waits between the - transmission of subsequent Hello packets"; - } - - leaf retransmission-interval { - type uint32; - units seconds; - description - "The number of seconds that the local system waits before - retransmitting an unacknowledged LSA."; - } - } - - grouping ospfv2-area-interface-mpls-config { - description - "Configuration parameters relating to MPLS extensions for OSPF"; - - leaf traffic-engineering-metric { - type uint32; - description - "A link metric that should only be considered for traffic - engineering purposes."; - reference "RFC3630, #2.5.5"; - } - } - - grouping ospfv2-area-interface-neighbor-config { - description - "Configuration parameters relating to an individual neighbor - system on an interface within an OSPF area"; - - leaf router-id { - type yang:dotted-quad; - description - "The router ID of the remote system."; - } - - leaf metric { - type oc-ospf-types:ospf-metric; - description - "The metric that should be considered to the remote neighbor - over this interface. This configuration is only applicable - for multiple-access networks"; - } - } - - grouping ospfv2-area-interface-neighbor-state { - description - "Operational state parameters relating an individual neighbor - system on an interface within an OSPF area"; - - leaf priority { - type uint8; - description - "The remote system's priority to become the designated - router"; - } - - leaf dead-time { - // rjs TODO: discussion with aashaikh@ + hines@ around how this - // value should be represented, usually is a timer that - // continually counts down but this sounds challenging for - // telemetry. - type oc-types:timeticks64; - description - "The time at which this neighbor's adjacency will be - considered dead. This value is expressed as a number of - seconds since the Unix Epoch"; - } - - leaf designated-router { - type yang:dotted-quad; - description - "The designated router for the adjacency. This device - advertises the Network LSA for broadcast and NBMA networks."; - } - - leaf backup-designated-router { - type yang:dotted-quad; - description - "The backup designated router for the adjacency."; - } - - leaf optional-capabilities { - // rjs TODO: should this be anything more than the hex-string - // this is currently what is shown in IOS/JUNOS - type yang:hex-string; - description - "The optional capabilities field received in the Hello - message from the neighbor"; - } - - leaf last-established-time { - type oc-types:timeticks64; - units seconds; - // rjs TODO: check implementations - is FULL considered 'up' - // since the adjacency is probably up since ExStart - description - "The time at which the adjacency was last established with - the neighbor. That is to say the time at which the - adjacency last transitioned into the FULL state. - - This value is expressed as the number of seconds, relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - } - - leaf adjacency-state { - type identityref { - base "oc-ospf-types:OSPF_NEIGHBOR_STATE"; - } - description - "The state of the adjacency with the neighbor."; - } - - leaf state-changes { - type uint32; - description - "The number of transitions out of the FULL state that this - neighbor has been through"; - } - - leaf retranmission-queue-length { - type uint32; - description - "The number of LSAs that are currently in the queue to be - retransmitted to the neighbor"; - } - } - - grouping ospfv2-area-interface-lsa-filter-config { - description - "Configuration options relating to filtering LSAs - on an interface."; - - leaf all { - type boolean; - description - "When this leaf is set to true, all LSAs should be - filtered to the neighbours with whom adjacencies are - formed on the interface."; - } - - // NB: this container can be augmented to add additional - // filtering options which exist in some implementations. - } - - grouping ospfv2-area-interface-mpls-igp-ldp-sync-state { - description - "Operational state parameters relating to MPLS LDP/IGP - synchronization on a per-neighbor basis"; - - leaf synchronized { - type boolean; - description - "When the value of this leaf is set to true, the - LDP neighbors reachable via this interface are considered - to be synchronized, and hence the link is considered - usable by the IGP."; - } - } - - grouping ospfv2-area-interfaces-structure { - description - "Structural grouping for configuration and operational state - parameters that relate to an interface"; - - container interfaces { - description - "Enclosing container for a list of interfaces enabled within - this area"; - - list interface { - key "id"; - - description - "List of interfaces which are enabled within this area"; - - leaf id { - type leafref { - path "../config/id"; - } - description - "A pointer to the identifier for the interface."; - } - - container config { - description - "Configuration parameters for the interface on which - OSPFv2 is enabled"; - - uses ospfv2-area-interface-config; - } - - container state { - config false; - description - "Operational state parameters for the interface on which - OSPFv2 is enabled"; - uses ospfv2-area-interface-config; - } - - uses oc-if:interface-ref; - - container timers { - description - "Timers relating to OSPFv2 on the interface"; - - container config { - description - "Configuration parameters for OSPFv2 timers on the - interface"; - uses ospfv2-area-interface-timers-config; - } - - container state { - config false; - description - "Operational state parameters for OSPFv2 timers on - the interface"; - - uses ospfv2-area-interface-timers-config; - } - } - - container mpls { - description - "Configuration and operational state parameters for - OSPFv2 extensions related to MPLS on the interface."; - - container config { - description - "Configuration parameters for OSPFv2 extensions relating - to MPLS for the interface"; - uses ospfv2-area-interface-mpls-config; - } - - container state { - config false; - description - "Operational state for OSPFv2 extensions relating to - MPLS for the interface"; - uses ospfv2-area-interface-mpls-config; - } - - container igp-ldp-sync { - description - "OSPFv2 parameters relating to LDP/IGP synchronization"; - - container config { - description - "Configuration parameters relating to LDP/IG - synchronization."; - uses ospfv2-common-mpls-igp-ldp-sync-config; - } - - container state { - config false; - description - "Operational state variables relating to LDP/IGP - synchronization"; - uses ospfv2-common-mpls-igp-ldp-sync-config; - uses ospfv2-area-interface-mpls-igp-ldp-sync-state; - } - } - } - - container lsa-filter { - description - "OSPFv2 parameters relating to filtering of LSAs to - neighbors the specified interface."; - - container config { - description - "Configuration parameters relating to filtering LSAs - on the specified interface."; - uses ospfv2-area-interface-lsa-filter-config; - } - - container state { - config false; - description - "Operational state parameters relating to filtering - LSAs on the specified interface"; - uses ospfv2-area-interface-lsa-filter-config; - } - } - - container neighbors { - description - "Enclosing container for the list of neighbors that - an adjacency has been established with on the interface"; - - list neighbor { - key "router-id"; - - description - "A neighbor with which an OSPFv2 adjacency has been - established within this area"; - - leaf router-id { - type leafref { - path "../config/router-id"; - } - description - "Reference to the router ID of the adjacent system"; - } - - container config { - description - "Configuration parameters relating to the adjacent - system"; - uses ospfv2-area-interface-neighbor-config; - } - - container state { - config false; - description - "Operational state parameters relating to the adjacent - system"; - uses ospfv2-area-interface-neighbor-config; - uses ospfv2-area-interface-neighbor-state; - } - } - } - - } - } - } - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-ospfv2-area.yang b/src/plugins/yang/openconfig/openconfig-ospfv2-area.yang deleted file mode 100644 index 2ee4ab4..0000000 --- a/src/plugins/yang/openconfig/openconfig-ospfv2-area.yang +++ /dev/null @@ -1,169 +0,0 @@ -submodule openconfig-ospfv2-area { - - belongs-to openconfig-ospfv2 { - prefix "oc-ospfv2"; - } - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-ospf-types { prefix "oc-ospf-types"; } - import ietf-inet-types { prefix "inet"; } - - // include other required submodules - include openconfig-ospfv2-area-interface; - include openconfig-ospfv2-lsdb; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule provides OSPFv2 configuration and operational - state parameters that are specific to the area context"; - - oc-ext:openconfig-version "0.1.2"; - - revision "2018-06-05" { - description - "Bug fixes in when statements in lsdb"; - reference "0.1.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "0.1.1"; - } - - revision "2017-02-28"{ - description - "Initial public release of OSPFv2"; - reference "0.1.0"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping ospfv2-area-config { - description - "Configuration parameters relating to an OSPF area"; - - leaf identifier { - type oc-ospf-types:ospf-area-identifier; - description - "An identifier for the OSPFv2 area - described as either a - 32-bit unsigned integer, or a dotted-quad"; - } - } - - grouping ospfv2-area-mpls-config { - description - "Configuration parameters relating to OSPFv2 extensions for - MPLS"; - - leaf traffic-engineering-enabled { - type boolean; - description - "Specifies whether traffic engineering extensions should be - advertised within the area"; - } - } - - grouping ospfv2-area-virtual-link-config { - description - "Configuration parameters relating to a virtual-link within - the OSPF area"; - - leaf remote-router-id { - type inet:ipv4-address-no-zone; - description - "The router ID of the device which terminates the remote end - of the virtual link"; - } - } - - grouping ospfv2-area-structure { - description - "Structural grouping for configuration and operational state - parameters that relate to an individual area"; - - container config { - description - "Configuration parameters relating to an OSPFv2 area"; - - uses ospfv2-area-config; - } - - container state { - config false; - description - "Operational state parameters relating to an OSPFv2 area"; - uses ospfv2-area-config; - } - - container mpls { - description - "Configuration and operational state parameters for OSPFv2 - extensions relating to MPLS"; - - container config { - description - "Configuration parameters relating to MPLS extensions for - OSPFv2"; - uses ospfv2-area-mpls-config; - } - - container state { - config false; - description - "Operational state parameters relating to MPLS extensions - for OSPFv2"; - uses ospfv2-area-mpls-config; - } - } - - uses ospfv2-lsdb-structure; - uses ospfv2-area-interfaces-structure; - - container virtual-links { - description - "Configuration and state parameters relating to virtual - links from the source area to a remote router"; - - list virtual-link { - key "remote-router-id"; - - description - "Configuration and state parameters relating to a - virtual link"; - - leaf remote-router-id { - type leafref { - path "../config/remote-router-id"; - } - description - "Reference to the remote router ID"; - } - - container config { - description - "Configuration parameters relating to the OSPF virtual link"; - uses ospfv2-area-virtual-link-config; - } - - container state { - config false; - description - "State parameters relating to the OSPF virtual link"; - uses ospfv2-area-virtual-link-config; - uses ospfv2-area-interface-neighbor-state; - } - } - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-ospfv2-common.yang b/src/plugins/yang/openconfig/openconfig-ospfv2-common.yang deleted file mode 100644 index 12df35e..0000000 --- a/src/plugins/yang/openconfig/openconfig-ospfv2-common.yang +++ /dev/null @@ -1,91 +0,0 @@ -submodule openconfig-ospfv2-common { - - belongs-to openconfig-ospfv2 { - prefix "oc-ospfv2"; - } - - import openconfig-extensions { prefix "oc-ext"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule provides OSPFv2 configuration and operational - state parameters that are shared across multiple contexts"; - - oc-ext:openconfig-version "0.1.2"; - - revision "2018-06-05" { - description - "Bug fixes in when statements in lsdb"; - reference "0.1.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "0.1.1"; - } - - revision "2017-02-28"{ - description - "Initial public release of OSPFv2"; - reference "0.1.0"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping ospfv2-common-mpls-igp-ldp-sync-config { - description - "Configuration parameters used for OSPFv2 MPLS/IGP - synchronization"; - - leaf enabled { - type boolean; - description - "When this leaf is set to true, do not utilise this link for - forwarding via the IGP until such time as LDP adjacencies to - the neighbor(s) over the link are established."; - } - - leaf post-session-up-delay { - type uint32; - units milliseconds; - description - "This leaf specifies a delay, expressed in units of milliseconds, - between the LDP session to the IGP neighbor being established, and - it being considered synchronized by the IGP."; - } - } - - grouping ospfv2-common-timers { - description - "Common definition of the type of timers that the OSPFv2 implementation - uses"; - - leaf timer-type { - type enumeration { - enum LINEAR_BACKOFF { - description - "The backoff used by the OSPFv2 implementation is linear, such that - a common delay is added following each event."; - } - enum EXPONENTIAL_BACKOFF { - description - "The backoff used by the OSPFv2 implementation is exponential, such - that the delay added following each event increases."; - } - } - description - "The timer mode that is utilised by the implementation."; - } - } -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-ospfv2-global.yang b/src/plugins/yang/openconfig/openconfig-ospfv2-global.yang deleted file mode 100644 index 6e82c9a..0000000 --- a/src/plugins/yang/openconfig/openconfig-ospfv2-global.yang +++ /dev/null @@ -1,509 +0,0 @@ -submodule openconfig-ospfv2-global { - - belongs-to openconfig-ospfv2 { - prefix "oc-ospfv2"; - } - - import ietf-yang-types { prefix "yang"; } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-routing-policy { prefix "oc-rpol"; } - import openconfig-ospf-types { prefix "oc-ospft"; } - - // Include common submodule - include openconfig-ospfv2-common; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule provides OSPFv2 configuration and operational - state parameters that are global to a particular OSPF instance"; - - oc-ext:openconfig-version "0.1.2"; - - revision "2018-06-05" { - description - "Bug fixes in when statements in lsdb"; - reference "0.1.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "0.1.1"; - } - - revision "2017-02-28"{ - description - "Initial public release of OSPFv2"; - reference "0.1.0"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping ospfv2-global-config { - description - "Global configuration for OSPFv2"; - - leaf router-id { - type yang:dotted-quad; - description - "A 32-bit number represented as a dotted quad assigned to - each router running the OSPFv2 protocol. This number should - be unique within the autonomous system"; - reference "rfc2828"; - } - - leaf summary-route-cost-mode { - type enumeration { - enum RFC1583_COMPATIBLE { - description - "Specify that summary routes should assume the cost of - the lowest-cost more-specific route as per the behaviour - specified in RFC1583"; - } - enum RFC2328_COMPATIBLE { - description - "Specify that summary routes should assume the cost of the - highest-cost more-specific route as per the revised - behaviour specified in RFC2328"; - } - } - default "RFC2328_COMPATIBLE"; - description - "Specify how costs for the summary routes should be specified - as per the behaviour in the original OSPF specification - RFC1583, or alternatively whether the revised behaviour - described in RFC2328 should be utilised"; - } - - leaf igp-shortcuts { - type boolean; - description - "When this leaf is set to true, OSPFv2 will route traffic to - a remote system via any LSP to the system that is marked as - shortcut eligible."; - } - - leaf log-adjacency-changes { - type boolean; - description - "When this leaf is set to true, a log message will be - generated when the state of an OSPFv2 neighbour changes."; - } - - leaf hide-transit-only-networks { - type boolean; - description - "When this leaf is set to true, do not advertise prefixes - into OSPFv2 that correspond to transit interfaces, as per - the behaviour discussed in RFC6860."; - reference - "RFC6860 - Hiding Transit-Only Networks in OSPF"; - } - } - - grouping ospfv2-global-spf-timers-config { - description - "Configuration parameters relating to global SPF timer - parameters for OSPFv2"; - - leaf initial-delay { - // rjs TODO: IS-IS model has this as decimal64 - should it be - // that or uint32 msec? - type uint32; - units msec; - description - "The value of this leaf specifies the time between a change - in topology being detected and the first run of the SPF - algorithm."; - } - - leaf maximum-delay { - // rjs TODO: same question as above - type uint32; - units msec; - description - "The value of this leaf specifies the maximum delay between - a topology change being detected and the SPF algorithm - running. This value is used for implementations that support - increasing the wait time between SPF runs."; - } - - // rjs TODO: some questions here around what we should specify: - // JUNOS has rapid-runs and holddown - // Cisco has maximum time between runs, and then a doubling of - // the wait interval up to that maximum. - // ALU has first-wait, second-wait, max-wait - } - - grouping ospfv2-global-lsa-generation-timers-config { - description - "Configuration parameters relating to global LSA generation - parameters for OSPFv2"; - - leaf initial-delay { - type uint32; - units msec; - description - "The value of this leaf specifies the time between the first - time an LSA is generated and advertised and the subsequent - generation of that LSA."; - } - - leaf maximum-delay { - type uint32; - units msec; - description - "The value of this leaf specifies the maximum time between the - generation of an LSA and the subsequent re-generation of that - LSA. This value is used in implementations that support - increasing delay between generation of an LSA"; - } - } - - grouping ospfv2-global-spf-timers-state { - description - "Operational state parameters relating to OSPFv2 global - timers"; - - uses ospfv2-common-timers; - } - - grouping ospfv2-global-lsa-generation-timers-state { - description - "Operational state parameters relating to OSPFv2 global - timers"; - - uses ospfv2-common-timers; - } - - grouping ospfv2-global-graceful-restart-config { - description - "Configuration parameters relating to graceful restart for - OSPFv2"; - - leaf enabled { - type boolean; - description - "When the value of this leaf is set to true, graceful restart - is enabled on the local system. In this case, the system will - use Grace-LSAs to signal that it is restarting to its - neighbors."; - } - - leaf helper-only { - type boolean; - description - "Operate graceful-restart only in helper mode. When this leaf - is set to true, the local system does not use Grace-LSAs to - indicate that it is restarting, but will accept Grace-LSAs - from remote systems, and suppress withdrawl of adjacencies - of the system for the grace period specified"; - } - } - - grouping ospfv2-global-mpls-config { - description - "Configuration parameters for OSPFv2 options which - relate to MPLS"; - - leaf traffic-engineering-extensions { - type boolean; - description - "When this leaf is set to true, use traffic engineering - extensions for OSPF to advertise TE parameters via type 10 - Opaque LSAs"; - } - } - - grouping ospfv2-global-inter-areapp-config { - description - "Configuration parameters for OSPFv2 policies which propagate - prefixes between areas"; - - leaf src-area { - type leafref { - // we are at ospf/global/inter-area-propagation-policies/... - // inter-area-propagation-policy/config/src-area - path "../../../../../areas/area/identifier"; - } - description - "The area from which prefixes are to be exported."; - } - - leaf dst-area { - type leafref { - // we are at ospf/global/inter-area-propagation-policies/... - // inter-area-propagation-policy/config/src-area - path "../../../../../areas/area/identifier"; - } - description - "The destination area to which prefixes are to be imported"; - } - - uses oc-rpol:apply-policy-import-config; - } - - grouping ospfv2-global-max-metric-config { - description - "Configuration paramters relating to setting the OSPFv2 - maximum metric."; - - leaf set { - type boolean; - description - "When this leaf is set to true, all non-stub interfaces of - the local system are advertised with the maximum metric, - such that the router does not act as a transit system, - (similarly to the IS-IS overload functionality)."; - reference - "RFC3137 - OSPF Stub Router Advertisement"; - } - - leaf timeout { - type uint64; - units "seconds"; - description - "The delay, in seconds, after which the advertisement of - entities with the maximum metric should be cleared, and - the system reverts to the default, or configured, metrics."; - } - - leaf-list include { - type identityref { - base "oc-ospft:MAX_METRIC_INCLUDE"; - } - description - "By default, the maximum metric is advertised for all - non-stub interfaces of a device. When identities are - specified within this leaf-list, additional entities - are also advertised with the maximum metric according - to the values within the list."; - } - - leaf-list trigger { - type identityref { - base "oc-ospft:MAX_METRIC_TRIGGER"; - } - description - "By default, the maximum metric is only advertised - when the max-metric/set leaf is specified as true. - In the case that identities are specified within this - list, they provide additional triggers (e.g., system - boot) that may cause the max-metric to be set. In this - case, the system should still honour the timeout specified - by the max-metric/timeout leaf, and clear the max-metric - advertisements after the expiration of this timer."; - } - } - - grouping ospfv2-global-structural { - description - "Top level structural grouping for OSPFv2 global parameters"; - - container global { - description - "Configuration and operational state parameters for settings - that are global to the OSPFv2 instance"; - - container config { - description - "Global configuration parameters for OSPFv2"; - uses ospfv2-global-config; - } - - container state { - config false; - description - "Operational state parameters for OSPFv2"; - uses ospfv2-global-config; - } - - container timers { - description - "Configuration and operational state parameters for OSPFv2 - timers"; - - container spf { - description - "Configuration and operational state parameters relating - to timers governing the operation of SPF runs"; - - container config { - description - "Configuration parameters relating to global OSPFv2 - SPF timers"; - uses ospfv2-global-spf-timers-config; - } - - container state { - config false; - description - "Operational state parameters relating to the global - OSPFv2 SPF timers"; - uses ospfv2-global-spf-timers-config; - uses ospfv2-global-spf-timers-state; - } - } - - container max-metric { - description - "Configuration and operational state parameters relating - to setting the OSPFv2 maximum metric."; - - container config { - description - "Configuration parameters relating to setting the OSPFv2 - maximum metric for a set of advertised entities."; - uses ospfv2-global-max-metric-config; - } - - container state { - config false; - description - "Operational state parameters relating to setting the - OSPFv2 maximum metric for a set of advertised entities."; - uses ospfv2-global-max-metric-config; - } - } - - container lsa-generation { - description - "Configuration and operational state parameters relating - to timers governing the generation of LSAs by the local - system"; - - container config { - description - "Configuration parameters relating to the generation of - LSAs by the local system"; - uses ospfv2-global-lsa-generation-timers-config; - } - - container state { - config false; - description - "Operational state parameters relating to the generation - of LSAs by the local system"; - uses ospfv2-global-lsa-generation-timers-config; - uses ospfv2-global-lsa-generation-timers-state; - } - } - } - - container graceful-restart { - description - "Configuration and operational state parameters for OSPFv2 - graceful restart"; - - container config { - description - "Configuration parameters relating to OSPFv2 graceful - restart"; - uses ospfv2-global-graceful-restart-config; - } - - container state { - config false; - description - "Operational state parameters relating to OSPFv2 graceful - restart"; - uses ospfv2-global-graceful-restart-config; - } - } - - container mpls { - description - "OSPFv2 parameters relating to MPLS"; - - container config { - description - "Configuration parameters relating to MPLS for OSPFv2"; - uses ospfv2-global-mpls-config; - } - - container state { - config false; - description - "Operational state parameters relating to MPLS for - OSPFv2"; - uses ospfv2-global-mpls-config; - } - - container igp-ldp-sync { - description - "OSPFv2 parameters relating to LDP/IGP synchronization"; - - container config { - description - "Configuration parameters relating to LDP/IG - synchronization."; - uses ospfv2-common-mpls-igp-ldp-sync-config; - } - - container state { - config false; - description - "Operational state variables relating to LDP/IGP - synchronization"; - uses ospfv2-common-mpls-igp-ldp-sync-config; - } - } - } - - container inter-area-propagation-policies { - description - "Policies defining how inter-area propagation should be performed - by the OSPF instance"; - - list inter-area-propagation-policy { - key "src-area dst-area"; - description - "A list of connections between pairs of areas - routes are - propagated from the source (src) area to the destination (dst) - area according to the policy specified"; - - leaf src-area { - type leafref { - path "../config/src-area"; - } - description - "Reference to the source area"; - } - - leaf dst-area { - type leafref { - path "../config/dst-area"; - } - description - "Reference to the destination area"; - } - - container config { - description - "Configuration parameters relating to the inter-area - propagation policy"; - uses ospfv2-global-inter-areapp-config; - } - - container state { - config false; - description - "Operational state parameters relating to the inter-area - propagation policy"; - uses ospfv2-global-inter-areapp-config; - } - } - } - } - } -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-ospfv2-lsdb.yang b/src/plugins/yang/openconfig/openconfig-ospfv2-lsdb.yang deleted file mode 100644 index b345724..0000000 --- a/src/plugins/yang/openconfig/openconfig-ospfv2-lsdb.yang +++ /dev/null @@ -1,2355 +0,0 @@ -submodule openconfig-ospfv2-lsdb { - - belongs-to openconfig-ospfv2 { - prefix "oc-ospfv2"; - } - - // import some basic types - import ietf-yang-types { prefix "yang"; } - import ietf-inet-types { prefix "inet"; } - import openconfig-types { prefix "oc-types"; } - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-ospf-types { prefix "oc-ospf-types"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "An OpenConfig model for the Open Shortest Path First (OSPF) - version 2 link-state database (LSDB)"; - - oc-ext:openconfig-version "0.1.2"; - - revision "2018-06-05" { - description - "Bug fixes in when statements in lsdb"; - reference "0.1.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "0.1.1"; - } - - revision "2017-02-28"{ - description - "Initial public release of OSPFv2"; - reference "0.1.0"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping ospfv2-lsdb-common-prefix-properties { - description - "Common properties used in the LSDB that relate to IPv4 prefixes"; - - leaf prefix-length { - type uint8 { - range "0..32"; - } - description - "The length of the IPv4 prefix contained in the Extended Prefix LSA"; - } - - leaf address-family { - // TODO: should this be an identity? - type enumeration { - enum IPV4_UNICAST { - value 0; - description - "The prefix contained within the Extended Prefix LSA is an IPv4 - unicast prefix"; - } - } - description - "The address family of the prefix contained in the Extended Prefix - LSA"; - } - } - - grouping ospfv2-lsdb-common-link-specification { - description - "Generic attributes used to identify links within OSPFv2"; - - leaf link-id { - type yang:dotted-quad; - description - "The identifier for the link specified. The value of the link - identifier is dependent upon the type of the LSA. The value is - specified to be, per sub-type: - 1) Neighbouring router's router ID. - 2) IP address of DR. - 3) IP network address. - 4) Neighbouring router router's ID."; - } - - leaf link-data { - type union { - type yang:dotted-quad; - type uint32; - } - description - "The data associated with the link type. The value is - dependent upon the subtype of the LSA. When the connection is - to a stub network it represents the mask; for p2p connections - that are unnumbered it represents the ifIndex value of the - router's interface; for all other connections it represents - the local system's IP address"; - } - - } - - grouping ospfv2-lsdb-common-unknown-tlv { - description - "A generic specification of a TLV to be used when the - value cannot be decoded by the local system"; - - leaf type { - type uint16; - description - "The type value of the unknown TLV"; - } - - leaf length { - type uint16; - description - "The length value of the unknown TLV"; - } - - leaf value { - type binary; - description - "The value portion of the unknwon TLV"; - } - } - - grouping ospfv2-lsdb-common-unknown-tlv-structure { - description - "A generic specification of an unknown TLV"; - - container unknown-tlv { - description - "An unknown TLV within the context. Unknown TLVs are - defined to be the set of TLVs that are not modelled - within the OpenConfig model, or are unknown to the - local system such that it cannot decode their value."; - - container state { - description - "Contents of an unknown TLV within the LSA"; - uses ospfv2-lsdb-common-unknown-tlv; - } - } - } - - grouping ospfv2-lsdb-common-unknown-subtlv-structure { - description - "A generic specification of an unknown TLV"; - - container unknown-subtlv { - description - "An unknown SubTLV within the context. Unknown Sub-TLV - are defined to be the set of SubTLVs that are not modelled - by the OpenConfig schema, or are unknown to the local system - such that it cannot decode their value."; - - container state { - description - "Contents of an unknown TLV within the LSA"; - uses ospfv2-lsdb-common-unknown-tlv; - } - } - } - - grouping ospfv2-lsdb-common-tos-metric { - description - "Common LSDB LSA parameters for type of service and metric"; - - leaf tos { - type uint8; - description - "OSPF encoding of the type of service referred to by this - LSA. Encoding for OSPF TOS are described in RFC2328."; - } - - leaf metric { - type oc-ospf-types:ospf-metric; - description - "The metric value to be used for the TOS specified. This value - represents the cost of use of the link for the specific type - of service."; - } - } - - grouping ospfv2-lsdb-common-sr-sid-spec { - description - "Re-usable specification of a segment routing SID"; - - leaf sid-type { - type oc-ospf-types:sr-sid-type; - description - "The type of the value contained within the sub-TLV"; - } - - leaf sid-value { - type uint32; - description - "The value of the binding included within the sub-TLV. The type of - this binding is indicated by the type leaf."; - } - } - - grouping ospfv2-lsdb-area-state { - description - "Per-area operational state parameters for an OSPFv2 area"; - - leaf identifier { - type oc-ospf-types:ospf-area-identifier; - description - "An identifier for the area, expressed as a dotted quad or - an unsigned 32-bit integer"; - } - } - - grouping ospfv2-lsdb-area-lsa-type-state { - description - "Per-LSA type operational state parameters for an OSPFv2 area"; - - leaf type { - type identityref { - base "oc-ospf-types:OSPF_LSA_TYPE"; - } - description - "The type of LSA being described. The type of the LSA is - expressed as a canonical name."; - } - } - - grouping ospfv2-lsdb-area-lsa-state { - description - "Generic parameters of an OSPFv2 LSA"; - - leaf link-state-id { - type yang:dotted-quad; - description - "The Link State ID for the specified LSA type. The exact - defined value of the Link State ID is dependent on the LSA - type."; - } - - leaf advertising-router { - type yang:dotted-quad; - description - "The router ID of the router that originated the LSA"; - } - - leaf sequence-number { - type int32; - description - "A signed 32-bit integer used to detect old and duplicate - LSAs. The greater the sequence number the more recent the - LSA."; - } - - leaf checksum { - type uint16; - description - "The checksum of the complete contents of the LSA excluding - the age field."; - } - - leaf age { - type uint16; - units seconds; - description - "The time since the LSA's generation in seconds"; - } - } - - grouping ospfv2-lsdb-router-lsa-structure { - description - "Structural grouping for Router LSA contents within the LSDB"; - - container router-lsa { - description - "Contents of the router LSA"; - - container state { - description - "State parameters of the router LSA"; - uses ospfv2-lsdb-router-lsa-state; - } - - uses ospfv2-lsdb-generic-lsa-tos-metric-structure; - } - } - - grouping ospfv2-lsdb-generic-lsa-tos-metric-structure { - description - "Grouping including a generic TOS/metric structure for an - LSA"; - - container types-of-service { - description - "Breakdown of LSA contents specifying multiple - TOS values"; - - list type-of-service { - key "tos"; - description - "Per-type of service parameters for the LSA"; - - leaf tos { - type leafref { - path "../state/tos"; - } - description - "Reference to the type of service identifier which is - specified in the LSA"; - } - - container state { - description - "Per-TOS parameters for the LSA"; - - uses ospfv2-lsdb-generic-lsa-tos-metric-state; - } - } - } - } - - grouping ospfv2-lsdb-network-lsa-structure { - description - "Structural grouping for Network LSA contents within the LSDB"; - - container network-lsa { - description - "Contents of the network LSA"; - - container state { - description - "State parameters of the network LSA"; - uses ospfv2-lsdb-network-lsa-state; - } - } - } - - grouping ospfv2-lsdb-summary-lsa-structure { - description - "Structural grouping for the Summary LSA contents within the - LSDB"; - - container summary-lsa { - description - "Contents of the summary LSA"; - - container state { - description - "State parameters of the summary LSA"; - uses ospfv2-lsdb-summary-lsa-state; - } - - uses ospfv2-lsdb-generic-lsa-tos-metric-structure; - } - } - - grouping ospfv2-lsdb-asexternal-lsa-structure { - description - "Structural grouping for the AS External LSA contents within - the LSDB"; - - container as-external-lsa { - description - "Contents of the AS External LSA"; - - container state { - description - "State parameters for the AS external LSA"; - uses ospfv2-lsdb-asexternal-lsa-state; - } - - container types-of-service { - description - "Breakdown of External LSA contents specifying multiple - TOS values"; - - list type-of-service { - key "tos"; - description - "Per-type of service parameters for the AS External LSA"; - - leaf tos { - type leafref { - path "../state/tos"; - } - description - "Reference to the type of service identifier which is - specified in the AS External LSA"; - } - - container state { - description - "Per-TOS parameters for the LSA"; - - uses ospfv2-lsdb-asexternal-tos-state; - } - } - } - - } - } - - grouping ospfv2-lsdb-nssa-external-lsa-structure { - description - "Structural grouping for the NSSA External LSA contents within - the LSDB"; - - container nssa-external-lsa { - description - "Contents of the NSSA External LSA"; - - container state { - description - "State parameters for the AS external LSA"; - // Type 7 LSAs are are a super-set of Type 5 LSAs so we simply - // include the Type 5 - uses ospfv2-lsdb-asexternal-lsa-state; - uses ospfv2-lsdb-nssa-external-lsa-state; - } - - container types-of-service { - description - "Breakdown of the NSSA External LSA contents specifying multiple - TOS values"; - - list type-of-service { - key "tos"; - description - "Per-type of service parameters for the NSSA external LSA"; - - leaf tos { - type leafref { - path "../state/tos"; - } - description - "Reference to the type of services identifier which is specified - in the NSSA External LSA"; - } - - container state { - description - "Per-TOS parameters for the LSA"; - uses ospfv2-lsdb-asexternal-tos-state; - } - } - } - } - } - - grouping ospfv2-lsdb-opaque-lsa-structure { - description - "Structural grouping for Opaque LSA contents within the LSDB"; - - container opaque-lsa { - description - "Contents of the opaque LSA"; - - container state { - description - "State parameters for the opaque LSA"; - uses ospfv2-lsdb-opaque-lsa-state; - } - - container traffic-engineering { - when "../state/type = 'TRAFFIC_ENGINEERING'" { - description - "Include the traffic-engineering information when - the Opaque LSA being described is a Traffic Engineering - LSA"; - } - description - "Contents of the Traffic Engineering Opaque LSA"; - - container tlvs { - description - "The TLVs contained in the TE Opaque LSA"; - list tlv { - // this is an unkeyed list - description - "The Type-Length-Value tuples included in the TE LSA"; - - container state { - description - "The contents of the TLV tuple within the TE LSA"; - uses ospfv2-lsdb-opaque-lsa-te-tlv-state; - } - - uses ospfv2-lsdb-common-unknown-tlv-structure; - - container router-address { - when "../state/type = 'TE_ROUTER_ADDRESS'" { - description - "Include the router address container only when the type - of the TLV is Router Address"; - } - - description - "Parameters included in the Router Address TLV"; - - container state { - description - "State parameters of the router address TLV"; - uses ospfv2-lsdb-opaque-te-router-address-state; - } - } - - container link { - when "../state/type = 'TE_ROUTER_LINK'" { - description - "Include the link container only when the type of the - TLV describes a traffic engineering link"; - } - - description - "Parameters included in the Link TLV"; - container sub-tlvs { - description - "Sub-TLVs included in the Link TLV"; - - list sub-tlv { - // unkeyed list - description - "The Sub-TLVs included within the Traffic Engineering - LSA's sub-TLV"; - - container state { - description - "State parameters of the Link Sub-TLV"; - - uses ospfv2-lsdb-opaque-te-link-state; - } - - uses ospfv2-lsdb-common-unknown-subtlv-structure; - - container unreserved-bandwidths { - description - "The unreserved link bandwidths for the Traffic - Engineering LSA - utilised when the sub-TLV type - indicates that the sub-TLV describes unreserved - bandwidth"; - - list unreserved-bandwidth { - key "priority"; - - description - "The unreserved bandwidth at each priority level"; - - leaf priority { - type leafref { - path "../state/priority"; - } - description - "A reference to the priority level being described"; - } - - container state { - description - "State parameters relating to the unreserved - bandwidth of the link being described"; - uses ospfv2-lsdb-opaque-te-link-unreserved-bw-state; - } - } - } - - container administrative-groups { - description - "The administrative groups that are set for the - Traffic Engineering LSA - utilised when the sub-TLV type - indicates that the sub-TLV describes administrative - groups"; - - list admin-group { - key "bit-index"; - - description - "The administrative group described within the - sub-TLV"; - - leaf bit-index { - type leafref { - path "../state/bit-index"; - } - description - "A reference to the bit index being described"; - } - - container state { - description - "State parameters relating to the administrative - groups being described for the link"; - uses ospfv2-lsdb-opaque-te-link-admin-group-state; - } - } - } - } - } - } - - container node-attribute { - when "../state/type = 'TE_NODE_ATTRIBUTE'" { - description - "Include the node-attribute container only when the type of - the TLV describes a node attribute"; - } - - description - "Parameters included in the Node Attribute TLV"; - - container sub-tlvs { - description - "Sub-TLVs of the Node Attribute TLV of the Traffic - Engineering LSA"; - - list sub-tlv { - // unkeyed list - description - "List of the Sub-TLVs contained within the Node Attribute - TLV"; - - container state { - description - "State parameters of the Node Attribute TLV sub-TLV"; - uses ospfv2-lsdb-opaque-te-node-attribute-state; - } - - uses ospfv2-lsdb-common-unknown-subtlv-structure; - } - } - } - - // A set of TLVs are omitted here - based on operational - // requirements, these are: - // * link-local - // * ipv6-address (OSPFv3 only) - // * optical-node-property - } - } - } // traffic-engineering - - container grace-lsa { - when "../state/type = 'GRACE_LSA'" { - description - "Include the grace-lsa container when the opaque LSA is specified - to be of that type."; - } - - description - "The Grace LSA is utilised when a remote system is undergoing - graceful restart"; - - container tlvs { - description - "TLVs of the Grace LSA"; - - list tlv { - description - "TLV entry in the Grace LSA, advertised by a system undergoing - graceful restart"; - - // unkeyed list - container state { - description - "Per-TLV state parameters of the Grace LSA"; - uses ospfv2-lsdb-opaque-grace-state; - } - uses ospfv2-lsdb-common-unknown-tlv-structure; - } - } - } // grace LSA - - container router-information { - when "../state/type = 'ROUTER_INFORMATION_LSA'" { - description - "Include the router-information container when the opaque LSA - type is specified to be an RI LSA"; - } - - description - "The router information LSA is utilised to advertise capabilities - of a system to other systems who receive the LSA"; - - container tlvs { - description - "The TLVs included within the Router Information LSA."; - - list tlv { - description - "TLV entry in the Router Information LSA"; - - // unkeyed list - container state { - description - "Per-TLV state parameters of the RI LSA"; - uses ospfv2-lsdb-opaque-ri-state; - } - - uses ospfv2-lsdb-common-unknown-tlv-structure; - - container informational-capabilities { - when "../state/type = 'RI_INFORMATIONAL_CAPABILITIES'" { - description - "Include the informational capabilities specification when - the TLV of the RI LSA is specified to be of this type"; - } - - description - "Information related to the capabilities of the advertising - router within the scope that the opaque RI LSA is being - advertised"; - - container state { - description - "State parameters of the informational capabilitis of the - RI LSA"; - uses ospfv2-lsdb-opaque-ri-informational-state; - } - } - - container node-administrative-tags { - when "../state/type = 'RI_NODE_ADMIN_TAG'" { - description - "Include the node administrative tags specification when - the TLV of the RI LSA is specified to be of this type"; - } - - description - "Per-node administrative tags associated with the local system - specified by the operator"; - - container state { - description - "State parameters of the node administrative tags advertised - in the RI LSA"; - uses ospfv2-lsdb-opaque-ri-admintag-state; - } - } - - container segment-routing-algorithm { - when "../state/type = 'RI_SR_ALGORITHM'" { - description - "Include the segment routing algorithm specific parameters when - the TLV of the RI LSA is specified to be of this type"; - } - - description - "The algorithms supported for Segment Routing by the local system"; - - container state { - description - "State parameters of the Segment Routing algorithm advertised in - the RI LSA"; - uses ospfv2-lsdb-opaque-ri-sralgo-state; - } - } - - container segment-routing-sid-label-range { - when "../state/type = 'RI_SR_SID_LABEL_RANGE'" { - description - "Include the segment routing SID/Label range TLV specific state when - the TLV of the RI LSA is specified to be of this type"; - } - - description - "The Segment Identifier (SID) or label ranges that are supported by - the local system for Segment Routing"; - - container tlvs { - description - "Sub-TLVs of the SID/Label range TLV of the RI LSA"; - - list tlv { - // unkeyed list - description - "Sub-TLVs of the SID/Label range TLV"; - - uses ospfv2-lsdb-common-unknown-tlv-structure; - - container state { - description - "State parameters of the sub-TLVs of the SR/Label range TLV"; - uses ospfv2-lsdb-opaque-ri-srrange-tlv-state; - } - - container sid-label { - description - "Sub-TLV used to advertise the SID or label associated with the - subset of the SRGB being advertised"; - - container state { - description - "State parameters of the SID/Label sub-TLV of the SR/Label - range TLV of the RI LSA"; - uses ospfv2-lsdb-opaque-ri-srrange-sid-label-tlv-state; - } - } - } - } - } - } - } - } // router-information - - container extended-prefix { - when "../state/type = 'OSPFV2_EXTENDED_PREFIX'" { - description - "Include the extended-prefix container when the opaque LSA - type is specified to be an extended prefix LSA"; - } - - description - "An OSPFv2 Extended Prefix Opaque LSA, used to encapsulate - TLV attributes associated with a prefix advertised in OSPF."; - - reference "RFC7684 - OSPFv2 Prefix/Link Attribute Advertisement"; - - container state { - description - "State parameters of the Extended Prefix LSA"; - uses ospfv2-lsdb-extended-prefix-state; - } - - container tlvs { - description - "TLVs contained within the Extended Prefix LSA"; - - list tlv { - // unkeyed list - description - "A TLV contained within the extended prefix LSA"; - - container state { - description - "State parameters relating to the sub-TLV of the extended - prefix LSA"; - uses ospfv2-lsdb-extended-prefix-tlv-state; - } - - container extended-prefix-range { - when "../state/type = 'EXTENDED_PREFIX_RANGE'" { - description - "Include the prefix range sub-TLV when the type of the - sub-TLV is specified as such"; - } - - description - "State parameters relating to the extended prefix range - sub-TLV of the extended prefix LSA"; - - container state { - description - "State parameters relating to the Extended Prefix Range - sub-TLV of the Extended Prefix LSA"; - uses ospfv2-lsdb-extended-prefix-range-state; - } - } - - container prefix-sid { - when "../state/type = 'PREFIX_SID'" { - description - "Include parameters relating to the Prefix SID when the type - of the sub-TLV is indicated as such"; - } - - description - "State parameters relating to the Prefix SID sub-TLV of the - extended prefix LSA"; - - container state { - description - "State parameters relating to the Prefix SID sub-TLV of the - extended prefix LSA"; - uses ospfv2-lsdb-extended-prefix-prefix-sid-state; - } - } // prefix-sid - - container sid-label-binding { - when "../state/type = 'SID_LABEL_BINDING'" { - description - "Include parameters relating to the SID/Label binding sub-TLV - only when the type is indicated as such"; - } - - description - "State parameters relating to the SID/Label binding sub-TLV - of the extended prefix LSA"; - - container state { - description - "State parameters relating to the SID/Label binding sub-TLV - of the extended prefix LSA"; - uses ospfv2-lsdb-extended-prefix-sid-label-binding-state; - } - - container tlvs { - description - "TLVs contained within the SID/Label Binding sub-TLV of the - SID/Label Binding TLV"; - - list tlv { - description - "A TLV contained within the SID/Label Binding sub-TLV"; - - container state { - description - "State parameters relating to the SID/Label Binding - sub-TLV"; - uses ospfv2-lsdb-extended-prefix-sid-label-binding-tlv-state; - } - - container sid-label-binding { - when "../state/type = 'SID_LABEL_BINDING'" { - description - "Include the SID/Label Binding sub-TLV parameters only - when the type is indicated as such"; - } - - description - "Parameters for the SID/Label Binding sub-TLV of the - SID/Label binding TLV"; - - container state { - description - "State parameteres relating to the SID/Label Binding - sub-TLV"; - uses ospfv2-lsdb-extprefix-sid-label-binding-state; - } - } // sid-label-binding - - container ero-metric { - when "../state/type = 'ERO_METRIC'" { - description - "Include the ERO Metric sub-TLV parameters only when - the type is indicated as such"; - } - - description - "Parameters for the ERO Metric Sub-TLV of the SID/Label - binding TLV"; - - container state { - description - "State parameters relating to the ERO Metric Sub-TLV of - the SID/Label binding TLV"; - uses ospfv2-lsdb-extprefix-sid-label-ero-metric-state; - } - } // ero-metric - - container ero-path { - when "../state/type = 'ERO_PATH'" { - description - "Include the ERO Path sub-TLV parameters only when the - type is indicated as such"; - } - - description - "Parameters for the ERO Path Sub-TLV of the SID/Label - binding TLV"; - - container segments { - description - "Segments of the path described within the SID/Label - Binding sub-TLV"; - - list segment { - description - "A segment of the path described within the sub-TLV"; - - container state { - description - "State parameters relating to the path segment - contained within the sub-TLV"; - uses ospfv2-lsdb-extprefix-sid-lbl-ero-path-seg-state; - } - - container ipv4-segment { - when "../state/type = 'IPV4_SEGMENT'" { - description - "Include the IPv4 segment only when the type is - indicated as such"; - } - - description - "Details of the IPv4 segment interface of the ERO"; - - container state { - description - "State parameters of the IPv4 segment of the ERO"; - uses ospfv2-lsdb-extprefix-sid-lbl-ero-ipv4-state; - } - } // ipv4-segment - - container unnumbered-hop { - when "../state/type = 'UNNUMBERED_INTERFACE_SEGMENT'" { - description - "Include the unnumbered segment only when the - type is indicated as such"; - } - - description - "Details of the unnumbered interface segment of the - ERO"; - - container state { - description - "State parameters of the unnumbered interface - segment of the ERO"; - uses ospfv2-lsdb-extprefix-sid-lbl-ero-unnum-state; - } - } // unnumbered-hop - } // tlv - } // tlvs - } - } - } - } // sid-label-binding - - uses ospfv2-lsdb-common-unknown-tlv-structure; - } - } - } // extended-prefix - - container extended-link { - description - "The OSPFv2 Extended Link Opaque LSA, used to encapsulate TLV - attributes associated with a link advertised in OSPF."; - - reference "RFC7684 - OSPFv2 Prefix/Link Attribute Advertisement"; - - container state { - description - "State parameters of the Extended Link LSA"; - uses ospfv2-lsdb-extended-link-state; - } - - container tlvs { - description - "TLVs contained within the Extended Link LSA"; - - list tlv { - description - "List of TLVs within the Extended Link LSA"; - - container state { - description - "State parameters relating to the sub-TLV of the extended link - LSA"; - uses ospfv2-lsdb-extended-link-tlv-state; - } - - uses ospfv2-lsdb-common-unknown-tlv-structure; - - container adjacency-sid { - when "../state/type = 'ADJACENCY_SID'" { - description - "Include the Adjacency SID parameters only when the type of - the sub-TLV is indicated as such"; - } - - description - "Parameters relating to an Adjacency SID sub-TLV of the - extended link LSA"; - - container state { - description - "State parameters relating to an Adjacency SID"; - - uses ospfv2-lsdb-extended-link-adj-sid-state; - } - } - } - } - - } // extended-link - - uses ospfv2-lsdb-common-unknown-tlv-structure; - } - } - - grouping ospfv2-lsdb-generic-lsa-tos-metric-state { - description - "Per-TOS state parameters for the Router LSA"; - - uses ospfv2-lsdb-common-tos-metric; - } - - grouping ospfv2-lsdb-router-lsa-state { - description - "Parameters of the router LSA"; - - leaf type { - type identityref { - base "oc-ospf-types:ROUTER_LSA_TYPES"; - } - description - "The sub-type of the Router LSA."; - } - - uses ospfv2-lsdb-common-link-specification; - - leaf metric { - type oc-ospf-types:ospf-metric; - description - "The cost of utilising the link specified independent of TOS"; - } - - leaf number-links { - type uint16; - description - "The number of links that are described within the LSA"; - } - - leaf number-tos-metrics { - type uint16; - description - "The number of different TOS metrics given for this link, not - including the link metric (which is referred to as TOS 0)."; - } - } - - grouping ospfv2-lsdb-network-lsa-state { - description - "Parameters of the Network LSA"; - - leaf network-mask { - type uint8 { - range "0..32"; - } - description - "The mask of the network described by the Network LSA - represented as a CIDR mask."; - } - - leaf-list attached-router { - type yang:dotted-quad; - description - "A list of the router ID of the routers that are attached to - the network described by the Network LSA"; - } - } - - grouping ospfv2-lsdb-summary-lsa-state { - description - "Parameters of the Summary LSA"; - - leaf network-mask { - type uint8 { - range "0..32"; - } - description - "The mask of the network described by the Summary LSA - represented as a CIDR mask."; - } - } - - grouping ospfv2-lsdb-asexternal-lsa-common-parameters { - description - "Common parameters that are used for OSPFv2 AS External LSAs"; - - leaf forwarding-address { - type inet:ipv4-address-no-zone; - description - "The destination to which traffic for the external prefix - should be advertised. When this value is set to 0.0.0.0 then - traffic should be forwarded to the LSA's originator"; - } - - leaf external-route-tag { - type uint32; - description - "An opaque tag that set by the LSA originator to carry - information relating to the external route"; - } - } - - grouping ospfv2-lsdb-asexternal-lsa-state { - description - "Parameters for the AS External LSA"; - - leaf mask { - type uint8 { - range "0..32"; - } - description - "The subnet mask for the advertised destination"; - } - - leaf metric-type { - type enumeration { - enum "TYPE_1" { - description - "When the metric of a prefix is specified as Type 1 - then it is considered to be expressed in the same units as - the link-state metrics carried in OSPF. That is to say - that the metric advertised is directly compared to the - internal cost"; - } - enum "TYPE_2" { - description - "When the metric of a prefix is specified as Type 2 then - it is considered to be expressed as a cost in addition to - that of the link-state metric to the advertising router. - That is to say that the metric is considered to be the - cost to the advertising router plus the advertised metric - for the external entity"; - } - } - description - "The type of metric included within the AS External LSA."; - } - - leaf metric { - type oc-ospf-types:ospf-metric; - description - "The cost to reach the external network specified. The exact - interpretation of this cost is dependent on the type of - metric specified"; - } - - uses ospfv2-lsdb-asexternal-lsa-common-parameters; - } - - grouping ospfv2-lsdb-asexternal-tos-state { - description - "Per-TOS parameters for the AS External LSA"; - - uses ospfv2-lsdb-asexternal-lsa-common-parameters; - uses ospfv2-lsdb-common-tos-metric; - } - - grouping ospfv2-lsdb-nssa-external-lsa-state { - description - "Operational state parameters specific to the NSSA External - LSA"; - - leaf propagate { - type boolean; - description - "When this bit is set to true, an NSSA border router will - translate a Type 7 LSA (NSSA External) to a Type 5 LSA - (AS External)."; - reference "RFC3101, Section 2.3"; - } - } - - grouping ospfv2-lsdb-opaque-lsa-state { - description - "Operational state parameters specific to an Opaque LSA"; - - leaf scope { - type enumeration { - enum LINK { - description - "The scope of the LSA is the current link. The LSA - is not flooded beyond the local network. This - enumeration denotes a Type 9 LSA."; - } - enum AREA { - description - "The scope of the LSA is the local area. The LSA - is not flooded beyond the area of origin. This - enumeration denotes a Type 10 LSA."; - } - enum AS { - description - "The scope of the LSA is the local autonomous - system (AS). The flooding domain is the same - as a Type 5 LSA - it is not flooded into - stub areas or NSSAs. This enumeration denotes a - Type 11 LSA."; - } - } - description - "The scope of the opaque LSA. The type of the LSA - indicates its scope - the value of this leaf - determines both the flooding domain, and the type - of the LSA."; - } - - leaf type { - type identityref { - base "oc-ospf-types:OSPF_OPAQUE_LSA_TYPE"; - } - description - "The Opaque Type of the LSA. This value is used to - indicate the type of data carried by the opaque LSA"; - } - } - - grouping ospfv2-lsdb-opaque-lsa-te-tlv-state { - description - "The contents of the Traffic Engineering LSA"; - - leaf type { - type identityref { - base "oc-ospf-types:OSPF_TE_LSA_TLV_TYPE"; - } - description - "The type of TLV within the Traffic Engineering LSA"; - } - } - - grouping ospfv2-lsdb-opaque-te-unknown-state { - description - "The contents of the unknown TLV within the Traffic Engineering LSA"; - - uses ospfv2-lsdb-common-unknown-tlv; - } - - grouping ospfv2-lsdb-opaque-te-link-state { - description - "The contents of the sub-TLVs of a Traffic Engineering LSA Link TLV"; - - leaf type { - type union { - type identityref { - base "oc-ospf-types:OSPF_TE_LINK_TLV_TYPE"; - } - type enumeration { - enum UNKNOWN { - description - "The sub-TLV received in the LSA is unknown to the local - system"; - } - } - } - description - "The sub-TLV type specified in the Link TLV. When the value is - known by the local system, a canonical name of the sub-TLV is utilised - - the special UNKNOWN value indicates that the system did not - support the sub-TLV type received in the LSA."; - } - - leaf unknown-type { - when "../type = 'UNKNOWN'" { - description - "Include the unknown type field only when the sub-TLV was not - known to the local system"; - } - - type uint16; - description - "The value of the type field of an unknown sub-TLV"; - } - - leaf unknown-value { - when "../type = 'UNKNOWN'" { - description - "Include the unknown value field only when the sub-TLV was not - known to the local system"; - } - - type binary; - description - "The binary contents of the unknown TLV"; - } - - leaf link-type { - when "../type = 'TE_LINK_TYPE'" { - description - "Include the link-type field only when the sub-TLV type was a TE - link type"; - } - - type enumeration { - enum POINT_TO_POINT { - description - "The link being described by the TE LSA Link sub-TLV is a - point-to-point link to exactly one other system"; - } - enum MULTI_ACCESS { - description - "The link being described by the TE LSA Link sub-TLV is a - multi-access link that supports connectivity to multiple remote - systems"; - } - enum UNKNOWN { - description - "The link type received was unknown to the local system"; - } - } - description - "The type of the link that is being described by the TE LSA Link - sub-TLV"; - } - - leaf link-id { - when "../type = 'TE_LINK_ID'" { - description - "Include the link ID field only when the sub-TLV type was a TE - Link identifier"; - } - - type yang:dotted-quad; - description - "The ID of the remote system. For point-to-point links, this is the - router ID of the neighbor. For multi-access links it is the address - of the designated router."; - } - - leaf-list local-ip-address { - when "../type = 'TE_LINK_LOCAL_IP'" { - description - "Include the local IP address field only when the sub-TLV type was - a local IP address"; - } - - type inet:ipv4-address-no-zone; - description - "The IP address(es) of the local system that correspond to the - specified TE link"; - } - - leaf-list remote-ip-address { - when "../type = 'TE_LINK_REMOTE_IP'" { - description - "Include the remote IP address field only when the sub-TLV type was - a remote IP address"; - } - - type inet:ipv4-address-no-zone; - description - "The IP address(es) of the remote systems that are attached to the - specified TE link"; - } - - leaf metric { - when "../type = 'TE_LINK_METRIC'" { - description - "Include the traffic engineering metric only when the sub-TLV type - is a TE metric"; - } - - type uint32; - description - "The metric of the link that should be used for traffic engineering - purposes. This link may be different than the standard OSPF link - metric."; - } - - leaf maximum-bandwidth { - when "../type = 'TE_LINK_MAXIMUM_BANDWIDTH'" { - description - "Include the traffic engineering metric only when the sub-TLV type - is the maximum bandwidth"; - } - - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The maximum bandwidth of the link. This value reflects the actual - bandwidth of the link expressed asn IEEE 32-bit floating point - number"; - } - - leaf maximum-reservable-bandwidth { - when "../type = 'TE_LINK_MAXIUMUM_RESERVABLE_BANDWIDTH'" { - description - "Include the maximum reservable bandwidth field only when the - sub-TLV type is the maximum reservable bandwidth"; - } - - type oc-types:ieeefloat32; - units "bytes per second"; - description - "The maximum reservable bandwidth for the link. This value represents - the total bandwidth which may be used for traffic engineering - purposes. The value may exceed the maximum-bandwidth value - in cases where the link is oversubscribed. The value is reflected as - a 32-bit IEEE floating-point number"; - } - } - - grouping ospfv2-lsdb-opaque-te-link-unreserved-bw-state { - description - "The per-priority unreserved bandwidth described within the unreserved - bandwidth sub-TLV of the Link TLV of the Traffic Engineering LSA"; - - leaf priority { - type uint8 { - range "0..7"; - } - description - "The priority level being described"; - } - - leaf unreserved-bandwidth { - type oc-types:ieeefloat32; - description - "The unreserved bandwidth for at priority level P, where P is - equal to the priority of the current list entry. The reservable - bandwidth at priority P is equal to the sum of the reservable - bandwidth at all levels 0..P."; - } - } - - grouping ospfv2-lsdb-opaque-te-link-admin-group-state { - description - "Per bit administrative group status"; - - leaf bit-index { - type uint8 { - range "0..31"; - } - description - "The index of the bit within the 32-bit administrative group field - of the Administrative Group sub-TLV of the Traffic Engineering LSA"; - } - - leaf set { - type boolean; - default false; - description - "Whether the bit is set within the administrative group field"; - } - } - - grouping ospfv2-lsdb-opaque-te-node-attribute-state { - description - "State parameters relating to the Traffic Engineering Node Attribute - TLV of the Traffic Engineering LSA"; - - leaf type { - type union { - type identityref { - base "oc-ospf-types:TE_NODE_ATTRIBUTE_TLV_TYPE"; - } - type enumeration { - enum UNKNOWN { - description - "The sub-TLV type received within the TE LSA Node Attribute TLV - was unknown the the local system"; - } - } - } - description - "The type of the sub-TLV of the Node Attribute TLV contained within - the TE LSA. If the local system can interpret the value received the - canonical name of the type is utilised, otherwise the special UNKNOWN - value is used"; - } - - leaf-list local-ipv4-addresses { - when "../type = 'NODE_IPV4_LOCAL_ADDRESS'" { - description - "Include the local IPv4 addresses when the type of the sub-TLV - indicates that this is the contained data"; - } - - type inet:ipv4-prefix; - description - "The local IPv4 addresses of the node expressed in CIDR notation"; - } - - leaf-list local-ipv6-addresses { - when "../type = 'NODE_LOCAL_IPV6_ADDRESS'" { - description - "Include the local IPv6 addresses when the type of the sub-TLV - indicfates that this is the contained data"; - } - - type inet:ipv6-prefix; - description - "The local IPv6 addreses of the node"; - } - } - - grouping ospfv2-lsdb-opaque-te-router-address-state { - description - "The contents of the value field of the Router Address TLV of the - Traffic Engineering LSA."; - - leaf address { - type inet:ipv4-address-no-zone; - description - "A stable IP address of the advertising router, that is always - reachable when the router is connected to the network. Typically this - is a loopback address."; - } - } - - grouping ospfv2-lsdb-opaque-grace-state { - description - "State parameters on a per-TLV basis of the Grace LSA"; - - leaf type { - type identityref { - base "oc-ospf-types:GRACE_LSA_TLV_TYPES"; - } - description - "The type of the sub-TLV received within the Grace LSA"; - } - - leaf period { - when "../type = 'GRACE_PERIOD'" { - description - "Include the period specification when the sub-TLV type is indicated - to be of this type"; - } - - type uint32; - units seconds; - description - "The number of seconds that the router's neighbors should advertise - the local system as fully adjacent regardless of database - synchronization state"; - reference "RFC3623"; - } - - leaf reason { - when "../type = 'GRACE_RESTART_REASON'" { - description - "Include the restart reason when the sub-TLV type specifies this - is included"; - } - - type enumeration { - enum UNKNOWN { - value 0; - description - "The reason for the graceful restart is unknown"; - } - enum SOFTWARE_RESTART { - value 1; - description - "The local system is restarting due to a software component - restart"; - } - enum SOFTWARE_RELOAD_UPGRADE { - value 2; - description - "The local system is restarting due to a software reload or - upgrade"; - } - enum CONTROL_PROCESSOR_SWITCH { - value 3; - description - "The local system is restarting due to a switch to a redundant - control plane element"; - } - } - description - "The reason for the graceful restart event occurring, as advertised - by the restarting system"; - reference "RFC3623"; - } - - leaf ip-interface-address { - when "../type = 'GRACE_IP_INTERFACE_ADDRESS'" { - description - "Include the interface address when the sub-TLV type specifies that - it is included"; - } - - type inet:ipv4-address-no-zone; - description - "The restarting system's IP address on the interface via which the - Grace LSA is being advertised."; - } - } - - grouping ospfv2-lsdb-opaque-ri-state { - description - "State parameters of the Router Information Opaque LSA"; - - leaf type { - type union { - type identityref { - base "oc-ospf-types:RI_LSA_TLV_TYPES"; - } - type enumeration { - enum UNKNOWN { - description - "The TLV received within the RI LSA is unknown"; - } - } - } - description - "The type of sub-TLV of the Router Information opaque LSA"; - } - } - - grouping ospfv2-lsdb-opaque-ri-informational-state { - description - "State parmaeters of the Router Information Informational Capabilities - sub-TLV"; - - leaf graceful-restart-capable { - type boolean; - default false; - description - "When this leaf is set to true, the advertising system is capable of - OSPF graceful restart."; - } - - leaf graceful-restart-helper { - type boolean; - default false; - description - "When this leaf is set to true, the advertising system is capable of - being a helper for OSPF graceful restart"; - } - - leaf stub-router { - type boolean; - default false; - description - "When this leaf is set to true, the advertising system is able to - advertise its status as a stub router"; - reference "RFC6987"; - } - - leaf traffic-engineering { - type boolean; - default false; - description - "When this leaf is set to true, the advertising system supports OSPFv2 - traffic engineering capabilities"; - } - - leaf point-to-point-over-lan { - type boolean; - default false; - description - "When this leaf is set to true, the advertising system supports treating - LAN adjacencies as though they were point to point"; - reference "RFC5309"; - } - - leaf experimental-te { - type boolean; - default false; - description - "When this leaf is set to ture, the advertising system supports the - experimental extensions to OSPF for TE described in RFC4973"; - reference "RFC4973"; - } - } - - grouping ospfv2-lsdb-opaque-ri-admintag-state { - description - "State parameters relating to the administrative tags specified for - a node within the RI LSA"; - - leaf-list administrative-tags { - type uint32; - description - "The set of administrative tags assigned to the local system by - the network operator. The meaning of these tags is opaque to OSPF - - and their interpretation is per-domain specific"; - reference "RFC7777"; - } - } - - grouping ospfv2-lsdb-opaque-ri-unknown-state { - description - "State parameters relating to an unknown TLV within the RI LSA"; - uses ospfv2-lsdb-common-unknown-tlv; - } - - grouping ospfv2-lsdb-opaque-ri-sralgo-state { - description - "State parameters relating to the SR Algorithms TLV of the RI LSA"; - - leaf-list supported-algorithms { - type identityref { - base "oc-ospf-types:SR_ALGORITHM"; - } - description - "A list of the algorithms that are supported for segment routing - by the advertising system"; - } - } - - grouping ospfv2-lsdb-opaque-ri-srrange-tlv-state { - description - "State parameters relating to the SR SID/Label range TLV of the - RI LSA"; - - leaf type { - type union { - type identityref { - base "oc-ospf-types:OSPF_RI_SR_SID_LABEL_TLV_TYPES"; - } - type enumeration { - enum UNKNOWN { - description - "The type of the sub-TLV advertised with the SID/Label range - TLV of the RI LSA is unknown to the receiving system"; - } - } - } - description - "The type of the sub-TLV received by the local system within the - SR SID/Label Range TLV of the RI LSA"; - } - - leaf range-size { - type uint32 { - range "0..16777216"; - } - description - "The number of entries within the range being described within the - SID/Label range TLV"; - } - } - - grouping ospfv2-lsdb-opaque-ri-srrange-sid-label-tlv-state { - description - "State parameters relating to the SR SID/Label sub-TLV of the SR SID/Label - range TLV of the RI LSA"; - - leaf entry-type { - type oc-ospf-types:sr-sid-type; - description - "The type of entry that is contained within the sub-TLV. The range may - be represented as either a range of MPLS labels, or numeric segment - identifiers"; - } - - leaf first-value { - type uint32; - description - "The first value within the SRGB range being specified. The type of the - entry is determined based on the value of the entry type as this value - may represent either a segment identifier or an MPLS label."; - } - } - - grouping ospfv2-lsdb-extended-prefix-state { - description - "State parameters relating to an Extended Prefix LSA"; - - leaf route-type { - type enumeration { - enum UNSPECIFIED { - value 0; - description - "The prefix described in the extended prefix LSA is of an - unspecified type"; - } - enum INTRA_AREA { - value 1; - description - "The prefix described in the extended prefix LSA is an intra-area - prefix for the advertising system"; - } - enum INTER_AREA { - value 3; - description - "The prefix described in the extended prefix LSA is an inter-area - prefix for the advertising system"; - } - enum AS_EXTERNAL { - value 5; - description - "The prefix described in the extended prefix LSA is external to the - autonomous system of the advertising system"; - } - enum NSSA_EXTERNAL { - value 7; - description - "The prefix described in the extended prefix LSA externally - advertised from an NSSA area visibile to the advertising system"; - } - } - description - "The type of prefix that is contained within the Extended Prefix LSA. - The information contained in sub-TLVs of the attribute is applicable - regardless of this value."; - } - - uses ospfv2-lsdb-common-prefix-properties; - - leaf attached { - type boolean; - default false; - description - "If this value is set to true, the prefix being advertised was - generated by an ABR for an inter-area prefix. The value corresponds - to the A-flag of the flags field of the Extended Prefix LSA"; - } - - leaf node { - type boolean; - default false; - description - "If this value is set to true, the prefix being advertised represents - the advertising router. Typically, the prefix within the LSA is - expected to be globally-reachable prefix associated with a loopback - interface"; - } - - leaf prefix { - type inet:ipv4-address-no-zone; - description - "The IPv4 prefix contained within the extended prefix LSA"; - } - } - - grouping ospfv2-lsdb-extended-link-state { - description - "State parameters related to an extended link LSA"; - - leaf link-type { - type identityref { - base "oc-ospf-types:OSPFV2_ROUTER_LINK_TYPE"; - } - description - "The type of link with which extended attributes are associated"; - } - - uses ospfv2-lsdb-common-link-specification; - - } - - grouping ospfv2-lsdb-extended-link-tlv-state { - description - "State parameters relating to a sub-TLV of the extended link LSA"; - - leaf type { - type identityref { - base "oc-ospf-types:OSPFV2_EXTENDED_LINK_SUBTLV_TYPE"; - } - description - "The type of the sub-TLV contained within the extended link TLV"; - } - } - - grouping ospfv2-lsdb-extended-prefix-tlv-state { - description - "State parameters related to a sub-TLV of an Extended Prefix LSA"; - - leaf type { - type identityref { - base "oc-ospf-types:OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE"; - } - description - "The type of sub-TLV as indicated by the Extended Prefix LSA"; - } - } - - grouping ospfv2-lsdb-extended-prefix-range-state { - description - "Parameters of the Extended Prefix Range SubTLV"; - - uses ospfv2-lsdb-common-prefix-properties; - - leaf range-size { - type uint16; - description - "The number of prefixes that are covered by the advertisement."; - } - - leaf inter-area { - type boolean; - default false; - description - "When this leaf is set to true, then the prefix range is inter-area - - the flag is set by the ABR that advertises the Extended Prefix Range - TLV"; - } - - leaf prefix { - type inet:ipv4-prefix; - description - "The first prefix in the range of prefixes being described by the - extended prefix range sub-TLV"; - } - } - - grouping ospfv2-lsdb-extended-prefix-prefix-sid-state { - description - "Parameters of the Prefix-SID sub-TLV"; - - leaf no-php { - type boolean; - default false; - description - "If this leaf is set the advertising system has indicated that the - prefix SID must not be popped before delivering packets to it"; - } - - leaf mapping-server { - type boolean; - default false; - description - "If this leaf is set the SID was advertised by a Segment Routing - mapping server"; - } - - leaf explicit-null { - type boolean; - default false; - description - "If this leaf is set, the advertising system has requested that the - prefix SID value should be replaced with the explicit null label - value"; - } - - leaf sid-value-type { - type enumeration { - enum ABSOLUTE { - description - "The SID contained in the Prefix-SID sub-TLV is an absolute - value"; - } - enum INDEX { - description - "The SID contained in the Prefix-SID sub-TLV is an index to the - SRGB"; - } - } - description - "Specifies the type of the value specified within the Prefix SID - sub-TLV - in particular, whether the value is an index or an - absolute value. This value corresponds with the V-flag of the Prefix - SID sub-TLV"; - } - - leaf sid-scope { - type enumeration { - enum LOCAL { - description - "The value of the SID is - significant only to the advertising system"; - } - enum GLOBAL { - description - "The value of the SID is globally significant"; - } - } - description - "Specifies the scope of the SID advertisement within the Prefix SID - sub-TLV. The scope of the SID is independent of whether the SID - contained is an index, or an absolute value"; - } - - leaf multi-topology-identifier { - type uint8; - description - "The identifier for the topology to which the Prefix SID relates. The - value of this leaf is a MT-ID as defined in RFC4915"; - } - - leaf algorithm { - type uint8; - description - "The algorithm that computes the path associated with the Prefix SID"; - } - - leaf sid-value { - type uint32; - description - "The value of the Prefix SID. The meaning of this value is dependent - upon the type of SID, and its scope. The value contained is either a - 32-bit value indicating the index of the SID, or a 24-bit label where - the 20 right-most bits are used for encoding the label value"; - } - } - - grouping ospfv2-lsdb-extended-prefix-sid-label-binding-state { - description - "State parameters relating to the extended prefix SID SID/Label binding - sub-TLV"; - - leaf mirroring { - type boolean; - default false; - description - "When set to true, this indicates that the SID/Label Binding sub-TLV - entries contained within this TLV are indicative of a mirroring - context"; - } - - leaf multi-topology-identifier { - type uint8; - description - "The identifier for the topology to which the SID/Label Binding - sub-TLV is associated. The value of this leaf is a MT-ID as defined - in RFC4915"; - } - - leaf weight { - type uint8; - description - "The weight of the advertised binding when used for load-balancing - purposes"; - } - } - - grouping ospfv2-lsdb-extended-prefix-sid-label-binding-tlv-state { - description - "State parameters directly relating to the SID/Label Binding TLV"; - - leaf type { - type identityref { - base - "oc-ospf-types:OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE"; - } - description - "The type of sub-TLV that is being contained within the SID/Label - sub-TLV"; - } - } - - grouping ospfv2-lsdb-extprefix-sid-label-binding-state { - description - "State parameters relating to the SID/Label binding sub-TLV of the - SID/Label/Binding TLV"; - - uses ospfv2-lsdb-common-sr-sid-spec; - } - - grouping ospfv2-lsdb-extprefix-sid-label-ero-metric-state { - description - "State parameters relating to the ERO Metric Sub-TLV of the SID/Label - Binding TLV"; - - leaf metric { - type uint32; - description - "The metric representing the aggregate IGP or TE path cost for the - binding included within the SID/Label Binding TLV"; - } - } - - grouping ospfv2-lsdb-extprefix-sid-lbl-ero-path-seg-state { - description - "State parameters relating to the a segment included within the - ERO Path Sub-TLV of the SID/Label Binding TLV"; - - leaf type { - type identityref { - base "oc-ospf-types:OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE"; - } - description - "The type of the segment being specified as part of the ERO"; - } - - leaf loose { - type boolean; - default false; - description - "If this leaf is set the segment is identifier as a loose path - segment, otherwise the path strictly follows the path specified"; - } - } - - grouping ospfv2-lsdb-extprefix-sid-lbl-ero-ipv4-state { - description - "State parameters relating to an IPv4 address segment included within - the ERO path"; - - leaf address { - type inet:ipv4-address-no-zone; - description - "The IPv4 address of the hop within the ERO"; - } - } - - grouping ospfv2-lsdb-extprefix-sid-lbl-ero-unnum-state { - description - "State parameters relating to an unnumbered hop within the ERO path"; - - leaf router-id { - type inet:ipv4-address-no-zone; - description - "The IPv4 router identtifier of the remote system"; - } - - leaf interface-id { - type uint32; - description - "The identifier assigned to the link by the remote system"; - } - } - - grouping ospfv2-lsdb-extended-link-adj-sid-state { - description - "State parameters relating to the Adjacency SID sub-TLV of the - Extended Link LSA"; - - leaf backup { - type boolean; - default false; - description - "When this flag is set, it indicates that the adjacency SID refers to - an adjacency which is eligible for protection"; - } - - leaf group { - type boolean; - default false; - description - "When this flag is set it indicates that the adjacency SID refers to - a group of adjacencies that have a common value"; - } - - uses ospfv2-lsdb-common-sr-sid-spec; - - leaf weight { - type uint8; - description - "The weight of the Adjacency SID when used for load-balancing"; - } - - leaf multi-topology-identifier { - type uint8; - description - "The multi-topology identifier with which the adjacency SID is - associated"; - } - } - - grouping ospfv2-lsdb-structure { - description - "Structural grouping for per-area LSDB contents"; - - container lsdb { - // Top-level RO, if this were ever to become writeable then - // the state containers lower down need config false added - config false; - description - "The link-state database for the OSPFv2 area"; - - container state { - description - "Operational state parameters relating to the OSPFv2 - area"; - - uses ospfv2-lsdb-area-state; - } - - container lsa-types { - description - "Enclosing container for a list of LSA types that are - in the LSDB for the specified area"; - - list lsa-type { - key "type"; - - description - "List of LSA types in the LSDB for the specified - area"; - - leaf type { - type leafref { - path "../state/type"; - } - description - "A reference for the LSA type being described within - the LSDB"; - } - - container state { - description - "Top-level operational state parameters relating to - an LSA within the area"; - uses ospfv2-lsdb-area-lsa-type-state; - } - - container lsas { - description - "Enclosing container for a list of the LSAs of - the specified type received by the system"; - - list lsa { - key "link-state-id"; - - description - "List of the LSAs of a specified type in the - LSDB for the specified area"; - - leaf link-state-id { - type leafref { - path "../state/link-state-id"; - } - description - "Reference to the Link State ID of the LSA"; - } - - container state { - description - "Operational state parameters relating to all - LSA types"; - uses ospfv2-lsdb-area-lsa-state; - } - - uses ospfv2-lsdb-router-lsa-structure { - when "../../state/type = 'ROUTER_LSA'" { - description - "Include the router LSA hierarchy solely when - that LSA type is being described"; - } - } - - uses ospfv2-lsdb-network-lsa-structure { - when "../../state/type = 'NETWORK_LSA'" { - description - "Include the network LSA hierarchy solely when - that LSA type is being described"; - } - } - - uses ospfv2-lsdb-summary-lsa-structure { - // rjs TODO: check this syntax - when "../../state/type = " + - "'SUMMARY_IP_NETWORK_LSA' or " + - "../../state/type = 'SUMMARY_ASBR_LSA'" { - description - "Include the summary LSA hierarchy solely when - that LSA type is being described"; - } - } - - uses ospfv2-lsdb-asexternal-lsa-structure { - when "../../state/type = 'AS_EXTERNAL_LSA'" { - description - "Include the AS external LSA hierarchy solely when - that LSA type is being described"; - } - } - - uses ospfv2-lsdb-nssa-external-lsa-structure { - when "../../state/type = 'NSSA_AS_EXTERNAL_LSA'" { - description - "Include the NSSA External LSA hierarchy solely - when that LSA type is being described"; - } - } - - uses ospfv2-lsdb-opaque-lsa-structure { - when "../../state/type = 'OSPFV2_LINK_SCOPE_OPAQUE_LSA' - or ../../state/type = 'OSPFV2_AREA_SCOPE_OPAQUE_LSA' - or ../../state/type = 'OSPFV2_AS_SCOPE_OPAQUE_LSA'" { - description - "Include the Opaque LSA structure when type of entry - being described in an opaque LSA"; - } - } - } - } - } - } - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-ospfv2.yang b/src/plugins/yang/openconfig/openconfig-ospfv2.yang deleted file mode 100644 index 6ff43c4..0000000 --- a/src/plugins/yang/openconfig/openconfig-ospfv2.yang +++ /dev/null @@ -1,98 +0,0 @@ -module openconfig-ospfv2 { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/ospfv2"; - - prefix "oc-ospfv2"; - - // import some basic types - //import ietf-inet-types { prefix inet; } - import openconfig-extensions { prefix "oc-ext"; } - - // Include submodules - // Global: All global context groupings; - include openconfig-ospfv2-global; - // Area: Config/opstate for an area - include openconfig-ospfv2-area; - // Area Interface: Config/opstate for an Interface - include openconfig-ospfv2-area-interface; - // LSDB: Operational state model covering the LSDB - include openconfig-ospfv2-lsdb; - // Common: Content included in >1 context - include openconfig-ospfv2-common; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "An OpenConfig model for Open Shortest Path First (OSPF) - version 2"; - - oc-ext:openconfig-version "0.1.2"; - - revision "2018-06-05" { - description - "Bug fixes in when statements in lsdb"; - reference "0.1.2"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes."; - reference "0.1.1"; - } - - revision "2017-02-28"{ - description - "Initial public release of OSPFv2"; - reference "0.1.0"; - } - - revision "2016-06-24" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping ospfv2-top { - description - "Top-level OSPF configuration and operational state"; - - container ospfv2 { - description - "Top-level configuration and operational state for - Open Shortest Path First (OSPF) v2"; - - uses ospfv2-global-structural; - - container areas { - description - "Configuration and operational state relating to an - OSPFv2 area."; - - list area { - key "identifier"; - - description - "The OSPFv2 areas within which the local system exists"; - - leaf identifier { - type leafref { - path "../config/identifier"; - } - description - "A reference to the identifier for the area."; - } - - uses ospfv2-area-structure; - } - } - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-packet-match-types.yang b/src/plugins/yang/openconfig/openconfig-packet-match-types.yang deleted file mode 100644 index d23cc61..0000000 --- a/src/plugins/yang/openconfig/openconfig-packet-match-types.yang +++ /dev/null @@ -1,297 +0,0 @@ -module openconfig-packet-match-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/packet-match-types"; - - prefix "oc-pkt-match-types"; - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines common types for use in models requiring - data definitions related to packet matches."; - - oc-ext:openconfig-version "1.0.1"; - - revision "2018-04-15" { - description - "Corrected description and range for ethertype typedef"; - reference "1.0.1"; - } - - revision "2017-05-26" { - description - "Separated IP matches into AFs"; - reference "1.0.0"; - } - - revision "2016-08-08" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - revision "2016-04-27" { - description - "Initial revision"; - reference "TBD"; - } - - // extension statements - - // feature statements - - // identity statements - - - //TODO: should replace this with an official IEEE module - // when available. Only a select number of types are - // defined in this identity. - identity ETHERTYPE { - description - "Base identity for commonly used Ethertype values used - in packet header matches on Ethernet frames. The Ethertype - indicates which protocol is encapsulated in the Ethernet - payload."; - reference - "IEEE 802.3"; - } - - identity ETHERTYPE_IPV4 { - base ETHERTYPE; - description - "IPv4 protocol (0x0800)"; - } - - identity ETHERTYPE_ARP { - base ETHERTYPE; - description - "Address resolution protocol (0x0806)"; - } - - identity ETHERTYPE_VLAN { - base ETHERTYPE; - description - "VLAN-tagged frame (as defined by IEEE 802.1q) (0x8100). Note - that this value is also used to represent Shortest Path - Bridging (IEEE 801.1aq) frames."; - } - - identity ETHERTYPE_IPV6 { - base ETHERTYPE; - description - "IPv6 protocol (0x86DD)"; - } - - identity ETHERTYPE_MPLS { - base ETHERTYPE; - description - "MPLS unicast (0x8847)"; - } - - identity ETHERTYPE_LLDP { - base ETHERTYPE; - description - "Link Layer Discovery Protocol (0x88CC)"; - } - - identity ETHERTYPE_ROCE { - base ETHERTYPE; - description - "RDMA over Converged Ethernet (0x8915)"; - } - - - //TODO: should replace this with an official IANA module when - //available. Only a select set of protocols are defined with - //this identity. - identity IP_PROTOCOL { - description - "Base identity for commonly used IP protocols used in - packet header matches"; - reference - "IANA Assigned Internet Protocol Numbers"; - } - - identity IP_TCP { - base IP_PROTOCOL; - description - "Transmission Control Protocol (6)"; - } - - identity IP_UDP { - base IP_PROTOCOL; - description - "User Datagram Protocol (17)"; - } - - identity IP_ICMP { - base IP_PROTOCOL; - description - "Internet Control Message Protocol (1)"; - } - - identity IP_IGMP { - base IP_PROTOCOL; - description - "Internet Group Membership Protocol (2)"; - } - - identity IP_PIM { - base IP_PROTOCOL; - description - "Protocol Independent Multicast (103)"; - } - - identity IP_RSVP { - base IP_PROTOCOL; - description - "Resource Reservation Protocol (46)"; - } - - identity IP_GRE { - base IP_PROTOCOL; - description - "Generic Routing Encapsulation (47)"; - } - - identity IP_AUTH { - base IP_PROTOCOL; - description - "Authentication header, e.g., for IPSEC (51)"; - } - - identity IP_L2TP { - base IP_PROTOCOL; - description - "Layer Two Tunneling Protocol v.3 (115)"; - } - - - - identity TCP_FLAGS { - description - "Common TCP flags used in packet header matches"; - reference - "IETF RFC 793 - Transmission Control Protocol - IETF RFC 3168 - The Addition of Explicit Congestion - Notification (ECN) to IP"; - } - - identity TCP_SYN { - base TCP_FLAGS; - description - "TCP SYN flag"; - } - - identity TCP_FIN { - base TCP_FLAGS; - description - "TCP FIN flag"; - } - - identity TCP_RST { - base TCP_FLAGS; - description - "TCP RST flag"; - } - - identity TCP_PSH { - base TCP_FLAGS; - description - "TCP push flag"; - } - - identity TCP_ACK { - base TCP_FLAGS; - description - "TCP ACK flag"; - } - - identity TCP_URG { - base TCP_FLAGS; - description - "TCP urgent flag"; - } - - identity TCP_ECE { - base TCP_FLAGS; - description - "TCP ECN-Echo flag. If the SYN flag is set, indicates that - the TCP peer is ECN-capable, otherwise indicates that a - packet with Congestion Experienced flag in the IP header - is set"; - } - - identity TCP_CWR { - base TCP_FLAGS; - description - "TCP Congestion Window Reduced flag"; - } - - // typedef statements - - typedef port-num-range { - type union { - type string { - pattern '^(6[0-5][0-5][0-3][0-5]|[0-5]?[0-9]?[0-9]?[0-9]?' + - '[0-9]?)\.\.(6[0-5][0-5][0-3][0-5]|[0-5]?[0-9]?[0-9]?' + - '[0-9]?[0-9]?)$'; - } - type oc-inet:port-number; - type enumeration { - enum ANY { - description - "Indicates any valid port number (e.g., wildcard)"; - } - } - } - description - "Port numbers may be represented as a single value, - an inclusive range as <lower>..<higher>, or as ANY to - indicate a wildcard."; - } - - typedef ip-protocol-type { - type union { - type uint8 { - range 0..254; - } - type identityref { - base IP_PROTOCOL; - } - } - description - "The IP protocol number may be expressed as a valid protocol - number (integer) or using a protocol type defined by the - IP_PROTOCOL identity"; - } - - typedef ethertype-type { - type union { - type uint16 { - range 1536..65535; - } - type identityref { - base ETHERTYPE; - } - } - description - "The Ethertype value may be expressed as a 16-bit number in - decimal notation, or using a type defined by the - ETHERTYPE identity"; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-packet-match.yang b/src/plugins/yang/openconfig/openconfig-packet-match.yang deleted file mode 100644 index 7dcf037..0000000 --- a/src/plugins/yang/openconfig/openconfig-packet-match.yang +++ /dev/null @@ -1,360 +0,0 @@ -module openconfig-packet-match { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/header-fields"; - - prefix "oc-pkt-match"; - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-packet-match-types { prefix oc-pkt-match-types; } - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines data related to packet header fields - used in matching operations, for example in ACLs. When a - field is omitted from a match expression, the effect is a - wildcard ('any') for that field."; - - oc-ext:openconfig-version "1.1.0"; - - revision "2017-12-15" { - description - "Add MPLS packet field matches"; - reference "1.1.0"; - } - - revision "2017-05-26" { - description - "Separated IP matches into AFs"; - reference "1.0.0"; - } - - revision "2016-08-08" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - revision "2016-04-27" { - description - "Initial revision"; - reference "TBD"; - } - - - // Physical Layer fields - // ethernet-header - grouping ethernet-header-config { - description - "Configuration data of fields in Ethernet header."; - - leaf source-mac { - type oc-yang:mac-address; - description - "Source IEEE 802 MAC address."; - } - - leaf source-mac-mask { - type oc-yang:mac-address; - description - "Source IEEE 802 MAC address mask."; - } - - leaf destination-mac { - type oc-yang:mac-address; - description - "Destination IEEE 802 MAC address."; - } - - leaf destination-mac-mask { - type oc-yang:mac-address; - description - "Destination IEEE 802 MAC address mask."; - } - - leaf ethertype { - type oc-pkt-match-types:ethertype-type; - description - "Ethertype field to match in Ethernet packets"; - } - } - - grouping ethernet-header-state { - description - "State information of fields in Ethernet header."; - } - - grouping ethernet-header-top { - description - "Top level container for fields in Ethernet header."; - - container l2 { - description - "Ethernet header fields"; - - container config { - description - "Configuration data"; - uses ethernet-header-config; - } - - container state { - config false; - description - "State Information."; - uses ethernet-header-config; - uses ethernet-header-state; - } - } - } - - grouping mpls-header-top { - description - "Top-level container for fields in an MPLS header."; - - container mpls { - description - "MPLS header fields"; - - container config { - description - "Configuration parameters relating to fields within - the MPLS header."; - uses mpls-header-config; - } - - container state { - config false; - description - "Operational state parameters relating to fields - within the MPLS header"; - uses mpls-header-config; - } - } - } - - grouping mpls-header-config { - description - "Configuration parameters relating to matches within - MPLS header fields."; - - leaf traffic-class { - type uint8 { - range "0..7"; - } - description - "The value of the MPLS traffic class (TC) bits, - formerly known as the EXP bits."; - } - } - - grouping ip-protocol-fields-common-config { - description - "IP protocol fields common to IPv4 and IPv6"; - - leaf dscp { - type oc-inet:dscp; - description - "Value of diffserv codepoint."; - } - - leaf protocol { - type oc-pkt-match-types:ip-protocol-type; - description - "The protocol carried in the IP packet, expressed either - as its IP protocol number, or by a defined identity."; - } - - leaf hop-limit { - type uint8 { - range 0..255; - } - description - "The IP packet's hop limit -- known as TTL (in hops) in - IPv4 packets, and hop limit in IPv6"; - } - } - - // IP Layer - // ip-protocol-fields - grouping ipv4-protocol-fields-config { - description - "Configuration data of IP protocol fields - for IPv4"; - - leaf source-address { - type oc-inet:ipv4-prefix; - description - "Source IPv4 address prefix."; - } - - leaf destination-address { - type oc-inet:ipv4-prefix; - description - "Destination IPv4 address prefix."; - } - - uses ip-protocol-fields-common-config; - - } - - grouping ipv4-protocol-fields-state { - description - "State information of IP header fields for IPv4"; - } - - grouping ipv4-protocol-fields-top { - description - "IP header fields for IPv4"; - - container ipv4 { - description - "Top level container for IPv4 match field data"; - - container config { - description - "Configuration data for IPv4 match fields"; - uses ipv4-protocol-fields-config; - } - - container state { - config false; - description - "State information for IPv4 match fields"; - uses ipv4-protocol-fields-config; - uses ipv4-protocol-fields-state; - } - } - } - - grouping ipv6-protocol-fields-config { - description - "Configuration data for IPv6 match fields"; - - leaf source-address { - type oc-inet:ipv6-prefix; - description - "Source IPv6 address prefix."; - } - - leaf source-flow-label { - type oc-inet:ipv6-flow-label; - description - "Source IPv6 Flow label."; - } - - leaf destination-address { - type oc-inet:ipv6-prefix; - description - "Destination IPv6 address prefix."; - } - - leaf destination-flow-label { - type oc-inet:ipv6-flow-label; - description - "Destination IPv6 Flow label."; - } - - uses ip-protocol-fields-common-config; - } - - grouping ipv6-protocol-fields-state { - description - "Operational state data for IPv6 match fields"; - } - - grouping ipv6-protocol-fields-top { - description - "Top-level grouping for IPv6 match fields"; - - container ipv6 { - description - "Top-level container for IPv6 match field data"; - - container config { - description - "Configuration data for IPv6 match fields"; - - uses ipv6-protocol-fields-config; - } - - container state { - - config false; - - description - "Operational state data for IPv6 match fields"; - - uses ipv6-protocol-fields-config; - uses ipv6-protocol-fields-state; - } - } - } - - // Transport fields - grouping transport-fields-config { - description - "Configuration data of transport-layer packet fields"; - - leaf source-port { - type oc-pkt-match-types:port-num-range; - description - "Source port or range"; - } - - leaf destination-port { - type oc-pkt-match-types:port-num-range; - description - "Destination port or range"; - } - - leaf-list tcp-flags { - type identityref { - base oc-pkt-match-types:TCP_FLAGS; - } - description - "List of TCP flags to match"; - } - } - - grouping transport-fields-state { - description - "State data of transport-fields"; - } - - grouping transport-fields-top { - description - "Destination transport-fields top level grouping"; - - container transport { - description - "Transport fields container"; - - container config { - description - "Configuration data"; - uses transport-fields-config; - } - - container state { - config false; - description - "State data"; - uses transport-fields-config; - uses transport-fields-state; - } - } - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-pf-forwarding-policies.yang b/src/plugins/yang/openconfig/openconfig-pf-forwarding-policies.yang deleted file mode 100644 index 6b08c87..0000000 --- a/src/plugins/yang/openconfig/openconfig-pf-forwarding-policies.yang +++ /dev/null @@ -1,385 +0,0 @@ -submodule openconfig-pf-forwarding-policies { - belongs-to openconfig-policy-forwarding { - prefix "oc-pf"; - } - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-packet-match { prefix "oc-pmatch"; } - import openconfig-yang-types { prefix "oc-yang"; } - import openconfig-inet-types { prefix "oc-inet"; } - - include openconfig-pf-path-groups; - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule contains configuration and operational state - relating to the definition of policy-forwarding policies."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2017-06-21" { - description - "Amend policy forwarding model based on ACL changes."; - reference "0.2.0"; - } - - revision "2017-02-28" { - description - "Initial public release of policy forwarding."; - reference "0.1.0"; - } - - revision "2016-11-08" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping pf-forwarding-policy-structural { - description - "Structural grouping defining forwarding policies under the - policy- forwarding module."; - - container policies { - description - "Forwarding policies defined to enact policy-based forwarding - on the local system."; - - list policy { - key "policy-id"; - - description - "A forwarding policy is defined to have a set of match - criteria, allowing particular fields of a packet's header to - be matched, and a set of forwarding actions which determines - how the local system should forward the packet."; - - leaf policy-id { - type leafref { - path "../config/policy-id"; - } - description - "Reference to the identifier for the forwarding-policy."; - } - - container config { - description - "Configuration options relating to the forwarding - policy."; - uses pf-forwarding-policy-config; - } - - container state { - config false; - description - "Operational state parameters relating to the forwarding - policy."; - uses pf-forwarding-policy-config; - } - - container rules { - description - "The criteria that should be matched for a packet to be - forwarded according to the policy action."; - - list rule { - key "sequence-id"; - - description - "A match rule for the policy. In the case that multiple - criteria are specified within a single rule, all criteria - must be met for the rule to be applied to a packet."; - - leaf sequence-id { - type leafref { - path "../config/sequence-id"; - } - description - "A unique sequence identifier for the match rule."; - } - - container config { - description - "Configuration parameters relating to the match - rule."; - uses pf-forwarding-policy-rule-config; - } - - container state { - config false; - description - "Operational state parameters relating to the match - rule."; - uses pf-forwarding-policy-rule-config; - uses pf-forwarding-policy-rule-state; - } - - uses oc-pmatch:ethernet-header-top; - uses oc-pmatch:ipv4-protocol-fields-top; - uses oc-pmatch:ipv6-protocol-fields-top; - uses oc-pmatch:transport-fields-top; - - container action { - description - "The forwarding policy action to be applied for - packets matching the rule."; - - container config { - description - "Configuration parameters relating to the forwarding - rule's action."; - uses pf-forwarding-policy-action-config; - } - - container state { - config false; - description - "Operational state parameters relating to the - forwarding rule's action."; - uses pf-forwarding-policy-action-config; - } - - uses pf-forwarding-policy-action-encapsulate-gre; - } - } - } - } - } - } - - grouping pf-forwarding-policy-config { - description - "Configuration parameters relating to the forwarding policy."; - - leaf policy-id { - type string; - description - "A unique name identifying the forwarding policy. This name is - used when applying the policy to a particular interface."; - } - } - - grouping pf-forwarding-policy-rule-config { - description - "Configuration parameters relating to a policy rule."; - - leaf sequence-id { - type uint32; - description - "Unique sequence number for the policy rule."; - } - } - - grouping pf-forwarding-policy-rule-state { - description - "Operational state parameters relating to a policy rule."; - - leaf matched-pkts { - type oc-yang:counter64; - description - "Number of packets matched by the rule."; - } - - leaf matched-octets { - type oc-yang:counter64; - description - "Bytes matched by the rule."; - } - } - - grouping pf-forwarding-policy-action-config { - description - "Forwarding policy action configuration parameters."; - - leaf discard { - type boolean; - default false; - description - "When this leaf is set to true, the local system should drop - packets that match the rule."; - } - - leaf decapsulate-gre { - type boolean; - default false; - description - "When this leaf is set to true, the local system should remove - the GRE header from the packet matching the rule. Following - the decapsulation it should subsequently forward the - encapsulated packet according to the relevant lookup (e.g., if - the encapsulated packet is IP, the packet should be routed - according to the IP destination)."; - } - - leaf network-instance { - type leafref { - - // We are at: - // $NIROOT/policy-forwarding/policies/ - // policy/rules/rule/action/config/ - // network-instance - path "../../../../../../../../config/name"; - } - description - "When this leaf is set, packets matching the match criteria - for the forwarding rule should be looked up in the - network-instance that is referenced rather than the - network-instance with which the interface is associated. - Such configuration allows policy-routing into multiple - sub-topologies from a single ingress access interface, or - different send and receive contexts for a particular - interface (sometimes referred to as half-duplex VRF)."; - } - - leaf path-selection-group { - type leafref { - // We are at: - // $NIROOT/policy-forwarding/policies/ - // policy/rules/rule/action/config/to-path-group - path "../../../../../../../path-selection-groups/" + - "path-selection-group/config/group-id"; - } - description - "When path-selection-group is set, packets matching the - match criteria for the forwarding rule should be forwarded - only via one of the paths that is specified within the - referenced path-selection-group. The next-hop of the packet - within the routing context should be used to determine between - multiple paths that are specified within the group."; - } - - leaf next-hop { - type oc-inet:ip-address; - description - "When an IP next-hop is specified in the next-hop field, - packets matching the match criteria for the forwarding rule - should be forwarded to the next-hop IP address, bypassing any - lookup on the local system."; - } - } - - grouping pf-forwarding-policy-action-encapsulate-gre { - description - "Structural grouping covering the encapsulate-gre action of the - policy forwarding rule."; - - container encapsulate-gre { - description - "Packets matching the policy rule should be GRE encapsulated - towards the set of targets defined within the target list. Where - more than one target is specified, or the target subnet expands - to more than one endpoint, packets should be load-balanced across - the destination addresses within the subnets."; - - container config { - description - "Configuration parameters for the GRE encapsulation rules action."; - uses pf-forwarding-policy-action-gre-config; - } - - container state { - description - "Operational state parameters for the GRE encapsulation rule - action."; - config false; - uses pf-forwarding-policy-action-gre-config; - } - - container targets { - description - "Surrounding container for the list of GRE tunnel targets that - should be encapsulated towards."; - - list target { - key "id"; - - leaf id { - type leafref { - path "../config/id"; - } - description - "Reference to the unique identifier for the target."; - } - - description - "Each target specified within this list should be treated as a - endpoint to which packets should be GRE encapsulated. Where the - set of destinations described within a single entry expands to - more than one destination IP address, packets should be load - shared across the destination using the local system's ECMP hashing - mechanisms."; - - container config { - description - "Configuration parameters for the GRE target."; - uses pf-forwarding-policy-action-gre-target-config; - } - - container state { - description - "Operational state parameters for the GRE target."; - config false; - uses pf-forwarding-policy-action-gre-target-config; - } - } - } - } - } - - grouping pf-forwarding-policy-action-gre-config { - description - "Configuration parameters for the encapsulate-gre forwarding - policy action."; - - leaf identifying-prefix { - type oc-inet:ip-prefix; - description - "An IP prefix that can be used to identify the group of - GRE endpoints that are being encapsulated towards. Systems - that require an IP identifier for the tunnel set - should use this prefix as the next-hop identifier."; - } - } - - grouping pf-forwarding-policy-action-gre-target-config { - description - "Configuration parameters for each target of a GRE Encapsulation - rule"; - - leaf id { - type string; - description - "A unique identifier for the target."; - } - - leaf source { - type oc-inet:ip-address; - description - "The source IP address that should be used when encapsulating - packets from the local system."; - } - - leaf destination { - type oc-inet:ip-prefix; - description - "The set of destination addresses that should be encapsulated towards. - Where a subnet is specified, each address within the subnet should be - treated as an independent destination for encapsulated traffic. Packets - should be distributed with ECMP across the set of tunnel destination - addresses."; - } - - leaf ip-ttl { - type uint8; - description - "The TTL that should be specified in the IP header of the GRE packet - encapsulating the packet matching the rule."; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-pf-interfaces.yang b/src/plugins/yang/openconfig/openconfig-pf-interfaces.yang deleted file mode 100644 index 41ba545..0000000 --- a/src/plugins/yang/openconfig/openconfig-pf-interfaces.yang +++ /dev/null @@ -1,121 +0,0 @@ -submodule openconfig-pf-interfaces { - belongs-to openconfig-policy-forwarding { - prefix "oc-pf"; - } - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-interfaces { prefix "oc-if"; } - - include openconfig-pf-forwarding-policies; - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule contains groupings related to the association - between interfaces and policy forwarding rules."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2017-06-21" { - description - "Amend policy forwarding model based on ACL changes."; - reference "0.2.0"; - } - - revision "2017-02-28" { - description - "Initial public release of policy forwarding."; - reference "0.1.0"; - } - - revision "2016-11-08" { - description - "Initial revision"; - reference "0.0.1"; - } - - - grouping pf-interfaces-structural { - description - "Structural grouping for interface to forwarding policy bindings - within the policy-forwarding model."; - - container interfaces { - description - "Configuration and operational state relating policy - forwarding on interfaces."; - - list interface { - key "interface-id"; - - description - "Configuration and operationals state relating to the - relationship between interfaces and policy-based forwarding - rules."; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "A reference to the unique identifier for the interface - being referenced by the policy."; - } - - container config { - description - "Configuration parameters relating to an interface to - policy forwarding rule binding."; - - uses pf-interface-config; - } - - container state { - config false; - description - "Operational state parameters relating to an interface to - policy forwarding rule binding."; - - uses pf-interface-config; - } - - uses oc-if:interface-ref; - } - } - } - - grouping pf-interface-config { - description - "Configuration parameters relating to an interface to policy - forwarding rule binding."; - - leaf interface-id { - type oc-if:interface-id; - description - "A unique identifier for the interface."; - } - - leaf apply-forwarding-policy { - type leafref { - // We are at /network-instances/network-instance/ - // policy-forwarding/interfaces/interface/config/ - // apply-forwarding-policy - path "../../../../policies/policy/" + - "config/policy-id"; - } - description - "The policy to be applied on the interface. Packets ingress on - the referenced interface should be compared to the match - criteria within the specified policy, and in the case that - these criteria are met, the forwarding actions specified - applied. These policies should be applied following quality of - service classification, and ACL actions if such entities are - referenced by the corresponding interface."; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-pf-path-groups.yang b/src/plugins/yang/openconfig/openconfig-pf-path-groups.yang deleted file mode 100644 index aa96595..0000000 --- a/src/plugins/yang/openconfig/openconfig-pf-path-groups.yang +++ /dev/null @@ -1,125 +0,0 @@ -submodule openconfig-pf-path-groups { - belongs-to openconfig-policy-forwarding { - prefix "oc-pf"; - } - - import openconfig-extensions { prefix "oc-ext"; } - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule contains configuration and operational state - relating to path-selection-groups which are used to group - forwarding entities together to be used as policy forwarding - targets."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2017-06-21" { - description - "Amend policy forwarding model based on ACL changes."; - reference "0.2.0"; - } - - revision "2017-02-28" { - description - "Initial public release of policy forwarding."; - reference "0.1.0"; - } - - revision "2016-11-08" { - description - "Initial revision"; - reference "0.0.1"; - } - - grouping pf-path-groups-structural { - description - "Structural grouping containing the definition of path groups - within the context of policy-based forwarding."; - - container path-selection-groups { - description - "Surrounding container for the path selection groups defined - within the policy forwarding model."; - - list path-selection-group { - key "group-id"; - - leaf group-id { - type leafref { - path "../config/group-id"; - } - description - "Reference to a unique identifier for the path selection - group"; - - } - - description - "A path selection group is a set of forwarding resources, - which are grouped as eligible paths for a particular - policy-based forwarding rule. A policy rule may select a - path-selection-group as the egress for a particular type of - traffic (e.g., DSCP value). The system then utilises its - standard forwarding lookup mechanism to select from the - paths that are specified within the group - for IP packets, - the destination IP address is used such that the packet is - routed to the entity within the path-selection-group that - corresponds to the next-hop for the destination IP address - of the packet; for L2 packets, the selection is based on the - destination MAC address. If multiple paths within the - selection group are eligible to be used for forwarding, - the packets are load-balanced between them according to - the system's usual load balancing logic."; - - container config { - description - "Configuration parameters relating to the path selection - group."; - uses pf-path-selection-group-config; - } - - container state { - config false; - description - "Operational state parameters relating to the path - selection group."; - uses pf-path-selection-group-config; - } - } - } - } - - grouping pf-path-selection-group-config { - description - "Configuration parameters relating to a path selection group."; - - leaf group-id { - type string; - description - "A unique name for the path-selection-group"; - } - - leaf-list mpls-lsp { - type leafref { - // We are at /network-instances/network-instance/ - // policy-forwarding/path-selection-groups/ - // path-selection-group/config/mpls-lsp - path "../../../../../mpls/lsps/constrained-path/tunnels/" + - "tunnel/config/name"; - } - description - "A set of MPLS constrained-path LSPs which should be - considered for the policy forwarding next-hop. In order to - select between the LSPs within the path-selection-group, the - system should determine which LSP provides the best path to - the next-hop for the routed packet."; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-pf-srte.yang b/src/plugins/yang/openconfig/openconfig-pf-srte.yang deleted file mode 100644 index 07e6cc5..0000000 --- a/src/plugins/yang/openconfig/openconfig-pf-srte.yang +++ /dev/null @@ -1,280 +0,0 @@ -module openconfig-pf-srte { - yang-version "1"; - namespace "http://openconfig.net/yang/policy-forwarding/sr-te"; - prefix "oc-pf-srte"; - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-network-instance { prefix "oc-ni"; } - import openconfig-mpls-types { prefix "oc-mplst"; } - import openconfig-inet-types { prefix "oc-inet"; } - import openconfig-segment-routing { prefix "oc-sr"; } - - organization - "OpenConfig working group"; - - contact - "OpenConfig Working group - www.openconfig.net"; - - description - "This module defines extensions to the OpenConfig policy forwarding - module to support static segment routing traffic engineering policy - definitions. Extensions are provided to match: - - - Ingress binding SIDs, such that traffic can be mapped based on - an ingress label. - - A colour community and endpoint combination, such that the - routes can be resolved according to the policy forwarding - entries that are to be installed. - - In addition, policy forwarding actions associated with next-hops are - added to the model. The next-hop set to be forwarded to is augmented - to cover a set of lists of segments. The most common application of - such segment lists is to express stacks of MPLS labels which are used - as SR segments. In addition, they may be used to expressed segments - in the form of IPv6 addresses."; - - oc-ext:openconfig-version "0.1.0"; - - revision 2017-10-01 { - description - "Initial revision of the SR-TE policy SAFI model."; - reference "0.1.0"; - } - - grouping oc-pf-srte-match-top { - description - "Top-level grouping used for SR-TE policy match criteria within - a policy forwarding rule."; - - container srte { - description - "Match criteria associated with Segment Routing Traffic Engineering - policies."; - - container config { - description - "Configuration parameters associated with SR-TE policies."; - uses oc-pf-srte-match-config; - } - - container state { - config false; - description - "Operational state parameters associated with SR-TE policies."; - uses oc-pf-srte-match-config; - } - } - } - - grouping oc-pf-srte-match-config { - description - "Configuration parameters specific to Segment Routing traffic - Engineering."; - - leaf mpls-bsid { - type oc-mplst:mpls-label; - description - "The Binding SID (BSID) to be matched expressed as an MPLS label. Packets - that are ingress to the system with the top-most label matching - the SID value specified in this leaf should be forwarded according - to the policy. The top-most label (the specified Binding SID) - must be popped from the label stack by the system."; - } - - leaf srte-endpoint { - type oc-inet:ip-address; - description - "When the policy forwarding rule is used for RIB resolution - to a Segment Routing Traffic Engineering path, the policy is used - when the required endpoint (which may be the protocol next-hop) - matches the endpoint address specified in this - leaf. When the leaf is set to all zeros (0.0.0.0 or ::), the endpoint - acts as a wildcard in the policy resolution."; - } - - leaf srte-color { - type uint32; - description - "When the policy forwarding rule is used for RIB resolution to a - specific Segment Routing Traffic Engineering path, the policy is - used when the colour required in the policy (which may be specified - based on the value of a BGP extended colour community) matches the - value of this leaf. The colour being set to 0 indicates that the - colour is a wildcard in the policy resolution."; - } - - leaf srte-preference { - type uint32; - description - "When there are multiple policy forwarding rules specified for - a particular SR-TE endpoint. The preference is used to resolve - between them. These rules may be learnt from a dynamic routing - protocol, or interface to the device, or from other static - entries configured on the system."; - } - } - - grouping oc-pf-srte-segment-list-top { - description - "Top-level grouping for specifying segment lists under a policy - forwarding action."; - - container segment-lists { - description - "A list of SR-TE segment lists that should be applied as an - action within this policy. Where a system selects the SR-TE - policy to be used, the list of segment lists that is specified - should be used as forwarding next-hops."; - - list segment-list { - key "index"; - description - "An individual segment list within the list of segment - lists used for SR-TE policies."; - - leaf index { - type leafref { - path "../config/index"; - } - description - "Reference to the index leaf which act as a key to the - segment-list list."; - } - - container config { - description - "Configuration parameters for the SR-TE segment list."; - uses oc-pf-srte-segment-list-config; - } - - container state { - config false; - description - "Operational state parameters relating to the SR-TE - segment list."; - uses oc-pf-srte-segment-list-config; - } - - container sids { - description - "Surrounding container for the list of SIDs that makes up the - segment list."; - - list sid { - key "index"; - - description - "List of SIDs that make up the segment list. The segment list - is formed by ordering the set of SIDs that are specified by - their index in ascending numerical order."; - - leaf index { - type leafref { - path "../config/index"; - } - description - "Reference to the SID's index within the segment list which - acts as the key of the list."; - } - - container config { - description - "Configuration parameters relating to the SID within the - segment list."; - uses oc-pf-srte-segment-list-sid-config; - } - - container state { - config false; - description - "Operational state parameters relating to the SID within - the segment list."; - uses oc-pf-srte-segment-list-sid-config; - } - } - } - } - } - } - - grouping oc-pf-srte-segment-list-config { - description - "Configuration parameters relating to a segment list."; - - leaf index { - type uint64; - description - "Unique integer identifying the segment list within the set - of segment lists used for the SR-TE policy action."; - } - - leaf weight { - type uint32; - description - "The weight of the segment list within the set of segment lists - specified for the policy. The traffic that is forwarded according - to the policy is distributed across the set of paths such that - each list receives weight/(sum of all weights) traffic."; - } - } - - grouping oc-pf-srte-segment-list-sid-config { - description - "Configuration parameters relating to a SID within an SR-TE segment - list"; - - leaf index { - type uint64; - description - "The index of the SID within the segment list. The segment list is - applied by ordering the SID entries in ascending numerical order - beginning at 0."; - } - - leaf value { - type oc-sr:sr-sid-type; - description - "The value of the SID that is to be used. Specified as an MPLS - label or IPv6 address."; - } - - leaf mpls-ttl { - type uint8; - default 0; - description - "The TTL to be set if the type of the SID is an MPLS label. If the - value of the TTL is set to be 0, the value is picked by the local - implementation."; - } - - leaf mpls-tc { - type uint8 { - range "0..7"; - } - default 0; - description - "The value of the MPLS Traffic Class (TC) bits to be used if the - value of the SID is an MPLS label. In the case that the value is - set to 0, then the local implementation should choose the value."; - } - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:policy-forwarding/" + - "oc-ni:policies/oc-ni:policy/oc-ni:rules/oc-ni:rule" { - description - "Add the SR-TE specific policy forwarding match criteria to the - policy forwarding model."; - - uses oc-pf-srte-match-top; - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:policy-forwarding/" + - "oc-ni:policies/oc-ni:policy/oc-ni:rules/oc-ni:rule/oc-ni:action" { - description - "Add the SR-TE specific policy forwarding actions to the - policy forwarding model."; - - uses oc-pf-srte-segment-list-top; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-pim-types.yang b/src/plugins/yang/openconfig/openconfig-pim-types.yang deleted file mode 100644 index 86cf78c..0000000 --- a/src/plugins/yang/openconfig/openconfig-pim-types.yang +++ /dev/null @@ -1,74 +0,0 @@ -module openconfig-pim-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/pim/types"; - - prefix "oc-pim-types"; - - // import some basic types - import openconfig-extensions { prefix "oc-ext"; } - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines types related to the PIM protocol model."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-02-19" { - description - "Initial revision."; - reference "0.1.0"; - } - - // identity statements - - identity PIM_MODE { - description - "Base identity for the operating modes of Protocol-Independent - Multicast."; - } - - identity PIM_MODE_SPARSE { - base PIM_MODE; - description - "PIM sparse mode (PIM-SM)."; - reference "RFC7761"; - } - - identity PIM_MODE_DENSE { - base PIM_MODE; - description - "PIM dense mode (PIM-DM)."; - reference "RFC3973"; - } - - // typedef statements - - typedef dr-priority-type { - type uint32; - description - "The port's designated router priority. Larger always preferred. - DR Priority is a 32-bit unsigned number, ranges 0-4294967295."; - reference "RFC7761 4.3.1 page 33"; - } - - typedef pim-interval-type { - type uint8 { - range 1..255; - } - units "seconds"; - description - "Interval at which the router sends the PIM message toward the - upstream RPF neighbor."; - reference "RFC7761 4.5 page 44, 4.3.1 page 29"; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-pim.yang b/src/plugins/yang/openconfig/openconfig-pim.yang deleted file mode 100644 index 7389f9c..0000000 --- a/src/plugins/yang/openconfig/openconfig-pim.yang +++ /dev/null @@ -1,464 +0,0 @@ -module openconfig-pim { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/pim"; - - prefix "oc-pim"; - - // import some basic types/interfaces - import openconfig-pim-types { prefix oc-pim-types; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-acl { prefix oc-acl; } - import openconfig-types { prefix "oc-types"; } - import openconfig-extensions { prefix "oc-ext"; } - import ietf-inet-types { prefix "inet"; } - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "An OpenConfig model for Protocol Independent Multicast (PIM)."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-02-09" { - description - "Initial revision."; - reference "0.1.0"; - } - - grouping admin-config { - description - "Re-usable grouping to enable or disable a particular feature."; - - leaf enabled { - type boolean; - default false; - description - "When set to true, the functionality within which this - leaf is defined is enabled, when set to false it is - explicitly disabled."; - } - } - - grouping pim-counters-state { - description - "Counters related to PIM messages."; - - leaf hello-messages { - type uint32; - description - "Number of hello messages received."; - reference "RFC7761 4.9.2 page 108"; - } - - leaf join-prune-messages { - type uint32; - description - "Number of join/prune messages received."; - reference "RFC7761 4.5 page 44"; - } - - leaf bootstrap-messages { - type uint32; - description - "Number of bootstrap router messages received."; - reference "RFC7761 3.7 page 12"; - } - } - - grouping pim-interface-config { - description - "Configuration data for PIM on each interface."; - - uses admin-config; - - leaf interface-id { - type oc-if:interface-id; - description - "Reference to an interface on which PIM is enabled."; - } - - leaf mode { - type identityref { - base oc-pim-types:PIM_MODE; - } - description - "PIM mode to use when delivering multicast traffic via this - interface."; - } - - leaf bsr-border { - type boolean; - default false; - description - "When set to true the device will not send bootstrap router - messages over this interface. By default these are transmitted - over all PIM sparse mode (PIM-SM) enabled interfaces."; - } - - leaf border-router { - type boolean; - default false; - description - "When set to true the interface is set as MBR (multicast border - router) and allows multicast traffic from sources that are - outside of the PIM domain."; - } - - - leaf dr-priority { - type oc-pim-types:dr-priority-type; - description - "The designated router priority of this interface. Larger always - preferred."; - } - - leaf join-prune-interval { - type oc-pim-types:pim-interval-type; - description - "Interval at which the router sends the PIM join/prune messages - toward the upstream RPF neighbor."; - } - - leaf hello-interval { - type oc-pim-types:pim-interval-type; - description - "Interval at which the router sends the PIM hello messages."; - } - - leaf dead-timer { - type uint16 { - range 1..65535; - } - description - "Number of missed hello messages after which a neighbor is - expired."; - } - } - - grouping pim-neighbor-state { - description - "PIM neighbor state."; - - leaf neighbor-address { - type inet:ipv4-address; - description - "IPv4 address of neighbor router."; - } - - leaf dr-address { - type inet:ipv4-address; - description - "IPv4 address of designated router."; - } - - leaf neighbor-established { - type oc-types:timeticks64; - description - "This timestamp indicates the time that the - PIM neighbor adjacency established. The value is the - timestamp in seconds relative to the Unix Epoch - (Jan 1, 1970 00:00:00 UTC). - - The PIM session uptime can be computed by clients - as the difference between this value and the - current time in UTC."; - } - - leaf neighbor-expires { - type oc-types:timeticks64; - description - "This timestamp indicates the time that the - PIM neighbor adjacency will expire should hello - messages fail to arrive from the neighbor. - The value is the timestamp in seconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - } - - leaf mode { - type identityref { - base oc-pim-types:PIM_MODE; - } - description - "PIM mode in use when delivering multicast traffic - via this neighbor."; - } - } - - grouping pim-neighbors-top { - description - "Details about PIM neighbors."; - - container neighbors { - config false; - description - "Details about PIM neighbors."; - - list neighbor { - key "neighbor-address"; - description - "Details about a specific PIM neighbor."; - - leaf neighbor-address { - type leafref { - path "../state/neighbor-address"; - } - description - "IPv4 address of neighbor router."; - } - - container state { - config false; - description - "Details about a specific PIM neighbor."; - - uses pim-neighbor-state; - } - } - } - } - - grouping pim-interfaces-top { - description - "Configuration and state data for PIM on each interface."; - - container interfaces { - description - "Configuration and state data for PIM on each interface."; - - list interface { - key "interface-id"; - description - "This container defines interface PIM configuration and - state information."; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "Reference to an interface on which PIM is enabled."; - } - - container config { - description - "PIM interface configuration."; - - uses pim-interface-config; - } - - container state { - config false; - description - "State information for PIM interfaces."; - - uses pim-interface-config; - container counters { - description - "PIM counters for each interface."; - - uses pim-counters-state; - } - } - - uses pim-neighbors-top; - uses oc-if:interface-ref; - } - } - } - - grouping pim-global-state { - description - "State and session data for PIM on each interface."; - - leaf neighbor-count { - type uint8; - description - "Number of adjacent PIM neighbors."; - } - - container counters { - description - "Global PIM counters."; - - uses pim-counters-state; - } - } - - grouping pim-sources-joined-top { - description - "List of multicast sources joined."; - - container sources-joined { - config false; - description - "List of multicast sources joined."; - - list source { - key "address"; - description - "A multicast source that has been joined."; - - leaf address { - type leafref { - path "../state/address"; - } - description - "Source address of multicast."; - } - - container state { - config false; - description - "State for a multicast source that has been joined."; - - leaf address { - type inet:ipv4-address; - description - "Source address of multicast."; - } - - leaf group { - type inet:ipv4-address; - description - "Multicast address."; - } - - leaf upstream-interface-id { - type oc-if:interface-id; - description - "The upstream interface for this multicast source."; - } - } - } - } - } - - grouping pim-global-ssm-config { - description - "Source specific multicast (SSM) configuration."; - - leaf ssm-ranges { - type leafref { - path "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/" + - "oc-acl:config/oc-acl:name"; - } - description - "List of accepted source specific multicast (SSM) address - ranges."; - } - } - - grouping pim-global-rp-addresses-config { - description - "Defines rendezvous points for sparse mode multicast."; - - leaf address { - type inet:ipv4-address; - description - "IPv4 address of rendezvous point."; - } - - leaf multicast-groups { - type string; - // TODO should this be an ACL or prefix-list reference or prefix list? - // Cisco it's an ACL, Juniper it's an inline prefix list - description - "List of multicast groups (multicast IP address ranges) for which - this entry will be used as a rendezvous point. When not - present the default is equivalent to all valid IP multicast - addresses."; - } - } - - grouping pim-global-top { - description - "Top level grouping for global PIM configuration."; - - container ssm { - description - "Source specific multicast (SSM)."; - - container config { - description - "Configuration for source specific multicast (SSM)."; - uses pim-global-ssm-config; - } - container state { - config false; - description - "State for source specific multicast (SSM)."; - uses pim-global-ssm-config; - } - } - - container rendezvous-points { - description - "Defines rendezvous points for sparse mode multicast."; - - list rendezvous-point { - key "address"; - description - "Defines a rendezvous point (RP) for sparse mode multicast."; - - leaf address { - type leafref { - path "../config/address"; - } - description - "IPv4 address of rendezvous point."; - } - - container config { - description - "Rendezvous point configuration."; - uses pim-global-rp-addresses-config; - } - container state { - config false; - description - "Rendezvous point state."; - uses pim-global-rp-addresses-config; - } - } - } - - container state { - config false; - description - "Global PIM state."; - uses pim-global-state; - } - - uses pim-sources-joined-top; - } - - grouping pim-top { - description - "Top-level grouping for PIM."; - - container pim { - description - "Top-level PIM configuration and operational state."; - - container global { - description - "This container defines global PIM configuration and state - information."; - uses pim-global-top; - } - - uses pim-interfaces-top; - } - } - - // data definition statements -} diff --git a/src/plugins/yang/openconfig/openconfig-platform-cpu.yang b/src/plugins/yang/openconfig/openconfig-platform-cpu.yang deleted file mode 100644 index 5ea25f1..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform-cpu.yang +++ /dev/null @@ -1,61 +0,0 @@ -module openconfig-platform-cpu { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform/cpu"; - - prefix "oc-cpu"; - - import openconfig-platform { prefix oc-platform; } - import openconfig-types { prefix oc-types; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines data related to FAN components in the - OpenConfig platform model."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-01-30" { - description - "Initial revision"; - reference "0.1.0"; - } - - grouping component-cpu-utilization { - description - "Per-component CPU statistics"; - - container utilization { - description - "Statistics representing CPU utilization of the - component."; - - container state { - config false; - description - "Operational state variables relating to the utilization - of the CPU."; - - uses oc-types:avg-min-max-instant-stats-pct; - } - } - } - - augment "/oc-platform:components/oc-platform:component/" + - "oc-platform:cpu" { - description - "Adding CPU utilization data to component model"; - - uses component-cpu-utilization; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-platform-ext.yang b/src/plugins/yang/openconfig/openconfig-platform-ext.yang deleted file mode 100644 index f47293e..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform-ext.yang +++ /dev/null @@ -1,72 +0,0 @@ -module openconfig-platform-ext { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform/extension"; - - prefix "oc-platform-ext"; - - import openconfig-platform { prefix oc-platform; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines optional extensions to the OpenConfig - platform model."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-01-18" { - description - "Initial revision"; - reference "0.1.0"; - } - - - // identity statements - - // typedef statements - - // grouping statements - - - grouping platform-component-ext-state { - description - "Operational state data for platform components"; - - leaf entity-id { - type uint32; - description - "A unique numeric identifier assigned by the system to the - component. This identifier may be used to represent the - corresponding SNMP Entity MIB identifier."; - } - } - - - // data definition statements - - // augment statements - - augment "/oc-platform:components/oc-platform:component/" + - "oc-platform:state" { - description - "Adding extension state data to components"; - - uses platform-component-ext-state; - } - - // rpc statements - - // notification statements - -} - diff --git a/src/plugins/yang/openconfig/openconfig-platform-fan.yang b/src/plugins/yang/openconfig/openconfig-platform-fan.yang deleted file mode 100644 index 92b5dbe..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform-fan.yang +++ /dev/null @@ -1,65 +0,0 @@ -module openconfig-platform-fan { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform/fan"; - - prefix "oc-fan"; - - import openconfig-platform { prefix oc-platform; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines data related to FAN components in the - OpenConfig platform model."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2018-01-18" { - description - "Initial revision"; - reference "0.1.0"; - } - - // identity statements - - // typedef statements - - // grouping statements - - grouping fan-state { - description - "Operational state data for fan components"; - - leaf speed { - type uint32; - units rpm; - description - "Current (instantaneous) fan speed"; - } - } - - - // data definition statements - - // augment statements - - augment "/oc-platform:components/oc-platform:component/" + - "oc-platform:fan/oc-platform:state" { - description - "Adding fan data to component model"; - - uses fan-state; - } - -} - diff --git a/src/plugins/yang/openconfig/openconfig-platform-linecard.yang b/src/plugins/yang/openconfig/openconfig-platform-linecard.yang deleted file mode 100644 index 46d9c7f..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform-linecard.yang +++ /dev/null @@ -1,118 +0,0 @@ -module openconfig-platform-linecard { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform/linecard"; - - prefix "oc-linecard"; - - import openconfig-platform { prefix oc-platform; } - import openconfig-platform-types { prefix oc-platform-types; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines data related to LINECARD components in - the openconfig-platform model"; - - oc-ext:openconfig-version "0.1.0"; - - revision "2017-08-03" { - description - "Initial revision"; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - // typedef statements - - // grouping statements - - grouping linecard-config { - description - "Configuration data for linecard components"; - - leaf power-admin-state { - type oc-platform-types:component-power-type; - default POWER_ENABLED; - description - "Enable or disable power to the linecard"; - } - } - - grouping linecard-state { - description - "Operational state data for linecard components"; - - leaf slot-id { - type string; - description - "Identifier for the slot or chassis position in which the - linecard is installed"; - } - } - - grouping linecard-top { - description - "Top-level grouping for linecard data"; - - container linecard { - description - "Top-level container for linecard data"; - - container config { - description - "Configuration data for linecards"; - - uses linecard-config; - } - - container state { - - config false; - - description - "Operational state data for linecards"; - - uses linecard-config; - uses linecard-state; - } - } - } - - // data definition statements - - // augment statements - - augment "/oc-platform:components/oc-platform:component" { - description - "Adding linecard data to physical inventory"; - - uses linecard-top { - when "current()/oc-platform:state/" + - "oc-platform:type = 'LINECARD'" { - description - "Augment is active when component is of type LINECARD"; - } - } - } - - // rpc statements - - // notification statements - -} - diff --git a/src/plugins/yang/openconfig/openconfig-platform-port.yang b/src/plugins/yang/openconfig/openconfig-platform-port.yang deleted file mode 100644 index 2039a8e..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform-port.yang +++ /dev/null @@ -1,149 +0,0 @@ -module openconfig-platform-port { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform/port"; - - prefix "oc-port"; - - // import some basic types - import openconfig-platform { prefix oc-platform; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-if-ethernet { prefix oc-eth; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines data related to PORT components in the openconfig-platform model"; - - oc-ext:openconfig-version "0.3.0"; - - revision "2018-01-20" { - description - "Added augmentation for interface-to-port reference"; - reference "0.3.0"; - } - - revision "2017-11-17" { - description - "Corrected augmentation path for port data"; - reference "0.2.0"; - } - - revision "2016-10-24" { - description - "Initial revision"; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - // typedef statements - - // grouping statements - - grouping port-breakout-config { - description - "Configuration data for the port breakout mode"; - - leaf num-channels { - type uint8; - description - "Sets the number of channels to 'breakout' on a port - capable of channelization"; - } - - leaf channel-speed { - type identityref { - base oc-eth:ETHERNET_SPEED; - } - description - "Sets the channel speed on each channel -- the - supported values are defined by the - ETHERNET_SPEED identity"; - } - } - - grouping port-breakout-state { - description - "Operational state data for the port breakout mode "; - } - - grouping port-breakout-top { - description - "Top-level grouping for port breakout data"; - - container breakout-mode { - description - "Top-level container for port breakout data"; - - container config { - description - "Configuration data for port breakout"; - - uses port-breakout-config; - } - - container state { - - config false; - - description - "Operational state data for port breakout"; - - uses port-breakout-config; - uses port-breakout-state; - } - } - } - - // data definition statements - - // augment statements - - augment "/oc-platform:components/oc-platform:component/" + - "oc-platform:port" { - description - "Adding port breakout data to physical platform data"; - - uses port-breakout-top { - when "./state/type = 'PORT'" { - description - "This data is valid only for PORT components"; - } - } - } - - augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { - description - "Adds a reference from the base interface to the corresponding - port component in the device inventory."; - - leaf hardware-port { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "For non-channelized interfaces, references the hardware port - corresponding to the base interface."; - } - } - - // rpc statements - - // notification statements - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-platform-psu.yang b/src/plugins/yang/openconfig/openconfig-platform-psu.yang deleted file mode 100644 index eec4caa..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform-psu.yang +++ /dev/null @@ -1,135 +0,0 @@ -module openconfig-platform-psu { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform/psu"; - - prefix "oc-platform-psu"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } - import openconfig-platform { prefix oc-platform; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines a schema for power supply components in - the OpenConfig platform model."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2018-01-16" { - description - "Changed admin state leaf name"; - reference "0.2.0"; - } - - revision "2017-12-21" { - description - "Initial revision"; - reference "0.1.0"; - } - - // identity statements - - // typedef statements - - // grouping statements - - grouping psu-config { - description - "Configuration data for power supply components"; - - leaf enabled { - type boolean; - default true; - description - "Adminsitrative control on the on/off state of the power - supply unit."; - } - } - - grouping psu-state { - description - "Operational state data for power supply components"; - - - // TODO(aashaikh): May need to convert some of these to - // interval statistics once decided on which leaves to include. - leaf capacity { - type oc-types:ieeefloat32; - units watts; - description - "Maximum power capacity of the power supply."; - } - - leaf input-current { - type oc-types:ieeefloat32; - units amps; - description - "The input current draw of the power supply."; - } - - leaf input-voltage { - type oc-types:ieeefloat32; - units volts; - description - "Input voltage to the power supply."; - } - - leaf output-current { - type oc-types:ieeefloat32; - units amps; - description - "The output current supplied by the power supply."; - } - - leaf output-voltage { - type oc-types:ieeefloat32; - units volts; - description - "Output voltage supplied by the power supply."; - } - - leaf output-power { - type oc-types:ieeefloat32; - units watts; - description - "Output power supplied by the power supply."; - } - } - - // data definition statements - - // augment statements - - augment "/oc-platform:components/oc-platform:component/" + - "oc-platform:power-supply/oc-platform:config" { - description - "Adds power supply data to component operational state."; - - uses psu-config; - } - - augment "/oc-platform:components/oc-platform:component/" + - "oc-platform:power-supply/oc-platform:state" { - description - "Adds power supply data to component operational state."; - - uses psu-config; - uses psu-state; - } - - - // rpc statements - - // notification statements -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-platform-transceiver.yang b/src/plugins/yang/openconfig/openconfig-platform-transceiver.yang deleted file mode 100644 index 66b9071..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform-transceiver.yang +++ /dev/null @@ -1,492 +0,0 @@ -module openconfig-platform-transceiver { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform/transceiver"; - - prefix "oc-transceiver"; - - // import some basic types - import openconfig-platform { prefix oc-platform; } - import openconfig-platform-port { prefix oc-port; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-transport-types { prefix oc-opt-types; } - import openconfig-types { prefix oc-types; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-yang-types { prefix oc-yang; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - for transceivers (i.e., pluggable optics). The module should be - used in conjunction with the platform model where other - physical entity data are represented. - - In the platform model, a component of type=TRANSCEIVER is - expected to be a subcomponent of a PORT component. This - module defines a concrete schema for the associated data for - components with type=TRANSCEIVER."; - - oc-ext:openconfig-version "0.5.0"; - - revision "2018-05-15" { - description - "Remove internal-temp state leaf, since we prefer - the generic /components/component/state/temperature - container for temperature information."; - reference "0.5.0"; - } - - revision "2018-01-22" { - description - "Fixed physical-channel path reference"; - reference "0.4.1"; - } - - revision "2017-09-18" { - description - "Use openconfig-yang-types module"; - reference "0.4.0"; - } - - revision "2017-07-08" { - description - "Adds clarification on aggregate power measurement data"; - reference "0.3.0"; - } - - revision "2016-12-22" { - description - "Adds preconfiguration data and clarified units"; - reference "0.2.0"; - } - - // identity statements - - // typedef statements - - // grouping statements - - grouping optical-power-state { - description - "Reusable leaves related to optical power state -- these - are read-only state values. If avg/min/max statistics are - not supported, the target is expected to just supply the - instant value"; - - container output-power { - description - "The output optical power of a physical channel in units - of 0.01dBm, which may be associated with individual - physical channels, or an aggregate of multiple physical - channels (i.e., for the overall transceiver). For an - aggregate, this may be a measurement from a photodetector - or a a calculation performed on the device by summing up - all of the related individual physical channels. - Values include the instantaneous, average, minimum, and - maximum statistics. If avg/min/max statistics are not - supported, the target is expected to just supply the - instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container input-power { - description - "The input optical power of a physical channel in units - of 0.01dBm, which may be associated with individual - physical channels, or an aggregate of multiple physical - channels (i.e., for the overall transceiver). For an - aggregate, this may be a measurement from a photodetector - or a a calculation performed on the device by summing up - all of the related individual physical channels. - Values include the instantaneous, average, minimum, and - maximum statistics. If avg/min/max statistics are not - supported, the target is expected to just supply the - instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container laser-bias-current { - description - "The current applied by the system to the transmit laser to - achieve the output power. The current is expressed in mA - with up to two decimal precision. Values include the - instantaneous, average, minimum, and maximum statistics. - If avg/min/max statistics are not supported, the target is - expected to just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-mA; - } - } - - grouping output-optical-frequency { - description - "Reusable leaves related to optical output power -- this is - typically configurable on line side and read-only on the - client-side"; - - leaf output-frequency { - type oc-opt-types:frequency-type; - description - "The frequency in MHz of the individual physical channel - (e.g. ITU C50 - 195.0THz and would be reported as - 195,000,000 MHz in this model). This attribute is not - configurable on most client ports."; - } - } - - - grouping physical-channel-config { - description - "Configuration data for physical client channels"; - - leaf index { - type uint16 { - range 0..max; - } - description - "Index of the physical channnel or lane within a physical - client port"; - } - - leaf description { - type string; - description - "Text description for the client physical channel"; - } - - leaf tx-laser { - type boolean; - description - "Enable (true) or disable (false) the transmit label for the - channel"; - } - - leaf target-output-power { - type decimal64 { - fraction-digits 2; - } - units dBm; - description - "Target output optical power level of the optical channel, - expressed in increments of 0.01 dBm (decibel-milliwats)"; - } - } - - grouping physical-channel-state { - description - "Operational state data for client channels."; - - uses output-optical-frequency; - uses optical-power-state; - } - - grouping physical-channel-top { - description - "Top-level grouping for physical client channels"; - - container physical-channels { - description - "Enclosing container for client channels"; - - list channel { - key "index"; - description - "List of client channels, keyed by index within a physical - client port. A physical port with a single channel would - have a single zero-indexed element"; - - leaf index { - type leafref { - path "../config/index"; - } - description - "Reference to the index number of the channel"; - } - - container config { - description - "Configuration data for physical channels"; - - uses physical-channel-config; - } - - container state { - - config false; - - description - "Operational state data for channels"; - - uses physical-channel-config; - uses physical-channel-state; - } - } - } - } - - - grouping port-transceiver-config { - description - "Configuration data for client port transceivers"; - - leaf enabled { - type boolean; - description - "Turns power on / off to the transceiver -- provides a means - to power on/off the transceiver (in the case of SFP, SFP+, - QSFP,...) or enable high-power mode (in the case of CFP, - CFP2, CFP4) and is optionally supported (device can choose to - always enable). True = power on / high power, False = - powered off"; - } - - leaf form-factor-preconf { - type identityref { - base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE; - } - description - "Indicates the type of optical transceiver used on this - port. If the client port is built into the device and not - pluggable, then non-pluggable is the corresponding state. If - a device port supports multiple form factors (e.g. QSFP28 - and QSFP+, then the value of the transceiver installed shall - be reported. If no transceiver is present, then the value of - the highest rate form factor shall be reported - (QSFP28, for example). - - The form factor is included in configuration data to allow - pre-configuring a device with the expected type of - transceiver ahead of deployment. The corresponding state - leaf should reflect the actual transceiver type plugged into - the system."; - } - - leaf ethernet-pmd-preconf { - type identityref { - base oc-opt-types:ETHERNET_PMD_TYPE; - } - description - "The Ethernet PMD is a property of the optical transceiver - used on the port, indicating the type of physical connection. - It is included in configuration data to allow pre-configuring - a port/transceiver with the expected PMD. The actual PMD is - indicated by the ethernet-pmd state leaf."; - } - } - - grouping port-transceiver-state { - description - "Operational state data for client port transceivers"; - - leaf present { - type enumeration { - enum PRESENT { - description - "Transceiver is present on the port"; - } - enum NOT_PRESENT { - description - "Transceiver is not present on the port"; - } - } - description - "Indicates whether a transceiver is present in - the specified client port."; - } - - leaf form-factor { - type identityref { - base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE; - } - description - "Indicates the type of optical transceiver used on this - port. If the client port is built into the device and not - pluggable, then non-pluggable is the corresponding state. If - a device port supports multiple form factors (e.g. QSFP28 - and QSFP+, then the value of the transceiver installed shall - be reported. If no transceiver is present, then the value of - the highest rate form factor shall be reported - (QSFP28, for example)."; - } - - leaf connector-type { - type identityref { - base oc-opt-types:FIBER_CONNECTOR_TYPE; - } - description - "Connector type used on this port"; - } - - leaf vendor { - type string { - length 1..16; - } - description - "Full name of transceiver vendor. 16-octet field that - contains ASCII characters, left-aligned and padded on the - right with ASCII spaces (20h)"; - } - - leaf vendor-part { - type string { - length 1..16; - } - description - "Transceiver vendor's part number. 16-octet field that - contains ASCII characters, left-aligned and padded on the - right with ASCII spaces (20h). If part number is undefined, - all 16 octets = 0h"; - } - - leaf vendor-rev { - type string { - length 1..2; - } - description - "Transceiver vendor's revision number. 2-octet field that - contains ASCII characters, left-aligned and padded on the - right with ASCII spaces (20h)"; - } - - //TODO: these compliance code leaves should be active based on - //the type of port - leaf ethernet-pmd { - type identityref { - base oc-opt-types:ETHERNET_PMD_TYPE; - } - description - "Ethernet PMD (physical medium dependent sublayer) that the - transceiver supports. The SFF/QSFP MSAs have registers for - this and CFP MSA has similar."; - } - - leaf sonet-sdh-compliance-code { - type identityref { - base oc-opt-types:SONET_APPLICATION_CODE; - } - description - "SONET/SDH application code supported by the port"; - } - - leaf otn-compliance-code { - type identityref { - base oc-opt-types:OTN_APPLICATION_CODE; - } - description - "OTN application code supported by the port"; - } - - leaf serial-no { - type string { - length 1..16; - } - description - "Transceiver serial number. 16-octet field that contains - ASCII characters, left-aligned and padded on the right with - ASCII spaces (20h). If part serial number is undefined, all - 16 octets = 0h"; - } - - leaf date-code { - type oc-yang:date-and-time; - description - "Representation of the transceiver date code, typically - stored as YYMMDD. The time portion of the value is - undefined and not intended to be read."; - } - - leaf fault-condition { - type boolean; - description - "Indicates if a fault condition exists in the transceiver"; - } - - uses optical-power-state; - - } - - grouping port-transceiver-top { - description - "Top-level grouping for client port transceiver data"; - - container transceiver { - description - "Top-level container for client port transceiver data"; - - container config { - description - "Configuration data for client port transceivers"; - - uses port-transceiver-config; - } - - container state { - - config false; - - description - "Operational state data for client port transceivers"; - - uses port-transceiver-config; - uses port-transceiver-state; - } - // physical channels are associated with a transceiver - // component - uses physical-channel-top; - } - } - - // data definition statements - - // augment statements - - augment "/oc-platform:components/oc-platform:component" { - description - "Adding transceiver data to physical inventory"; - - uses port-transceiver-top { - when "current()/oc-platform:state/" + - "oc-platform:type = 'TRANSCEIVER'" { - description - "Augment is active when component is of type TRANSCEIVER"; - } - } - } - - augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { - //TODO: add 'when' or other condition to make sure this - //leafref points to a component of type TRANSCEIVER. - description - "Adds a reference from the base interface to its corresponding - physical channels."; - - leaf-list physical-channel { - type leafref { - path "/oc-platform:components/" + - "oc-platform:component[oc-platform:name=current()/../oc-port:hardware-port]/" + - "oc-transceiver:transceiver/" + - "oc-transceiver:physical-channels/oc-transceiver:channel/" + - "oc-transceiver:index"; - } - description - "For a channelized interface, list of references to the - physical channels (lanes) corresponding to the interface."; - } - } - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-platform-types.yang b/src/plugins/yang/openconfig/openconfig-platform-types.yang deleted file mode 100644 index a997439..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform-types.yang +++ /dev/null @@ -1,271 +0,0 @@ -module openconfig-platform-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform-types"; - - prefix "oc-platform-types"; - - import openconfig-types { prefix oc-types; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines data types (e.g., YANG identities) - to support the OpenConfig component inventory model."; - - oc-ext:openconfig-version "0.9.0"; - - revision "2018-05-05" { - description - "Added min-max-time to - avg-min-max-instant-stats-precision1-celsius, - added new CONTROLLER_CARD identity"; - reference "0.9.0"; - } - - revision "2018-01-16" { - description - "Added new per-component common data; add temp alarm"; - reference "0.8.0"; - } - - revision "2017-12-14" { - description - "Added anchor containers for component data, added new - component types"; - reference "0.7.0"; - } - - revision "2017-08-16" { - description - "Added power state enumerated type"; - reference "0.6.0"; - } - - revision "2016-12-22" { - description - "Added temperature state variable to component"; - reference "0.5.0"; - } - - // grouping statements - - - grouping avg-min-max-instant-stats-precision1-celsius { - description - "Common grouping for recording temperature values in - Celsius with 1 decimal precision. Values include the - instantaneous, average, minimum, and maximum statistics"; - - leaf instant { - type decimal64 { - fraction-digits 1; - } - units celsius; - description - "The instantaneous value of the statistic."; - } - - leaf avg { - type decimal64 { - fraction-digits 1; - } - units celsius; - description - "The arithmetic mean value of the statistic over the - sampling period."; - } - - leaf min { - type decimal64 { - fraction-digits 1; - } - units celsius; - description - "The minimum value of the statistic over the sampling - period"; - } - - leaf max { - type decimal64 { - fraction-digits 1; - } - units celsius; - description - "The maximum value of the statistic over the sampling - period"; - } - - uses oc-types:stat-interval-state; - uses oc-types:min-max-time; - } - - // identity statements - - identity OPENCONFIG_HARDWARE_COMPONENT { - description - "Base identity for hardware related components in a managed - device. Derived identities are partially based on contents - of the IANA Entity MIB."; - reference - "IANA Entity MIB and RFC 6933"; - } - - - identity OPENCONFIG_SOFTWARE_COMPONENT { - description - "Base identity for software-related components in a managed - device"; - } - - // hardware types - - identity CHASSIS { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Chassis component, typically with multiple slots / shelves"; - } - - identity BACKPLANE { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Backplane component for aggregating traffic, typically - contained in a chassis component"; - } - - identity FABRIC { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Interconnect between ingress and egress ports on the - device (e.g., a crossbar switch)."; - } - - identity POWER_SUPPLY { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Component that is supplying power to the device"; - } - - identity FAN { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Cooling fan, or could be some other heat-reduction component"; - } - - identity SENSOR { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Physical sensor, e.g., a temperature sensor in a chassis"; - } - - identity FRU { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Replaceable hardware component that does not have a more - specific defined schema."; - } - - identity LINECARD { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Linecard component, typically inserted into a chassis slot"; - } - - identity CONTROLLER_CARD { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "A type of linecard whose primary role is management or control - rather than data forwarding."; - } - - identity PORT { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Physical port, e.g., for attaching pluggables and networking - cables"; - } - - identity TRANSCEIVER { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Pluggable module present in a port"; - } - - identity CPU { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "Processing unit, e.g., a management processor"; - } - - identity STORAGE { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "A storage subsystem on the device (disk, SSD, etc.)"; - } - - identity INTEGRATED_CIRCUIT { - base OPENCONFIG_HARDWARE_COMPONENT; - description - "A special purpose processing unit, typically for traffic - switching/forwarding (e.g., switching ASIC, NPU, forwarding - chip, etc.)"; - } - - identity OPERATING_SYSTEM { - base OPENCONFIG_SOFTWARE_COMPONENT; - description - "Operating system running on a component"; - } - - - identity COMPONENT_OPER_STATUS { - description - "Current operational status of a platform component"; - } - - identity ACTIVE { - base COMPONENT_OPER_STATUS; - description - "Component is enabled and active (i.e., up)"; - } - - identity INACTIVE { - base COMPONENT_OPER_STATUS; - description - "Component is enabled but inactive (i.e., down)"; - } - - identity DISABLED { - base COMPONENT_OPER_STATUS; - description - "Component is administratively disabled."; - } - - // typedef statements - - typedef component-power-type { - type enumeration { - enum POWER_ENABLED { - description - "Enable power on the component"; - } - enum POWER_DISABLED { - description - "Disable power on the component"; - } - } - description - "A generic type reflecting whether a hardware component - is powered on or off"; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-platform.yang b/src/plugins/yang/openconfig/openconfig-platform.yang deleted file mode 100644 index 399cf24..0000000 --- a/src/plugins/yang/openconfig/openconfig-platform.yang +++ /dev/null @@ -1,762 +0,0 @@ -module openconfig-platform { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/platform"; - - prefix "oc-platform"; - - import openconfig-platform-types { prefix oc-platform-types; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-alarm-types { prefix oc-alarm-types; } - import openconfig-yang-types { prefix oc-yang; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines a data model for representing a system - component inventory, which can include hardware or software - elements arranged in an arbitrary structure. The primary - relationship supported by the model is containment, e.g., - components containing subcomponents. - - It is expected that this model reflects every field replacable - unit on the device at a minimum (i.e., additional information - may be supplied about non-replacable components). - - Every element in the inventory is termed a 'component' with each - component expected to have a unique name and type, and optionally - a unique system-assigned identifier and FRU number. The - uniqueness is guaranteed by the system within the device. - - Components may have properties defined by the system that are - modeled as a list of key-value pairs. These may or may not be - user-configurable. The model provides a flag for the system - to optionally indicate which properties are user configurable. - - Each component also has a list of 'subcomponents' which are - references to other components. Appearance in a list of - subcomponents indicates a containment relationship as described - above. For example, a linecard component may have a list of - references to port components that reside on the linecard. - - This schema is generic to allow devices to express their own - platform-specific structure. It may be augmented by additional - component type-specific schemas that provide a common structure - for well-known component types. In these cases, the system is - expected to populate the common component schema, and may - optionally also represent the component and its properties in the - generic structure. - - The properties for each component may include dynamic values, - e.g., in the 'state' part of the schema. For example, a CPU - component may report its utilization, temperature, or other - physical properties. The intent is to capture all platform- - specific physical data in one location, including inventory - (presence or absence of a component) and state (physical - attributes or status)."; - - oc-ext:openconfig-version "0.12.0"; - - revision "2018-06-29" { - description - "Added location description for components"; - reference "0.12.0"; - } - - revision "2018-06-03" { - description - "Added parent reference, empty flag and preconfiguration - for components"; - reference "0.11.0"; - } - - revision "2018-04-20" { - description - "Added new per-component state data: mfg-date and removable"; - reference "0.10.0"; - } - - revision "2018-01-30" { - description - "Amended approach for modelling CPU - rather than having - a local CPU utilisation state variable, a component with - a CPU should create a subcomponent of type CPU to report - statistics."; - reference "0.9.0"; - } - - revision "2018-01-16" { - description - "Added new per-component common data; add temp alarm; - moved hardware-port reference to port model"; - reference "0.8.0"; - } - - revision "2017-12-14" { - description - "Added anchor containers for component data, added new - component types"; - reference "0.7.0"; - } - - revision "2017-08-16" { - description - "Added power state enumerated type"; - reference "0.6.0"; - } - - revision "2016-12-22" { - description - "Added temperature state variable to component"; - reference "0.5.0"; - } - - // grouping statements - - - grouping platform-component-properties-config { - description - "System-defined configuration data for component properties"; - - leaf name { - type string; - description - "System-supplied name of the property -- this is typically - non-configurable"; - } - - leaf value { - type union { - type string; - type boolean; - type int64; - type uint64; - type decimal64 { - fraction-digits 2; - } - } - description - "Property values can take on a variety of types. Signed and - unsigned integer types may be provided in smaller sizes, - e.g., int8, uint16, etc."; - } - } - - grouping platform-component-properties-state { - description - "Operational state data for component properties"; - - leaf configurable { - type boolean; - description - "Indication whether the property is user-configurable"; - } - } - - grouping platform-component-properties-top { - description - "Top-level grouping "; - - container properties { - description - "Enclosing container "; - - list property { - key "name"; - description - "List of system properties for the component"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the property name."; - } - - container config { - description - "Configuration data for each property"; - - uses platform-component-properties-config; - } - - container state { - - config false; - - description - "Operational state data for each property"; - - uses platform-component-properties-config; - uses platform-component-properties-state; - } - } - } - } - - grouping platform-subcomponent-ref-config { - description - "Configuration data for subcomponent references"; - - leaf name { - type leafref { - path "../../../../../component/config/name"; - } - description - "Reference to the name of the subcomponent"; - } - } - - grouping platform-subcomponent-ref-state { - description - "Operational state data for subcomponent references"; - - } - - grouping platform-subcomponent-ref-top { - description - "Top-level grouping for list of subcomponent references"; - - container subcomponents { - description - "Enclosing container for subcomponent references"; - - list subcomponent { - key "name"; - description - "List of subcomponent references"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the name list key"; - } - - container config { - description - "Configuration data for the subcomponent"; - - uses platform-subcomponent-ref-config; - } - - container state { - - config false; - - description - "Operational state data for the subcomponent"; - - uses platform-subcomponent-ref-config; - uses platform-subcomponent-ref-state; - } - } - } - } - - grouping platform-component-config { - description - "Configuration data for components"; - - leaf name { - type string; - description - "Device name for the component -- this may not be a - configurable parameter on many implementations. Where - component preconfiguration is supported, for example, - the component name may be configurable."; - } - } - - grouping platform-component-state { - description - "Operational state data for device components."; - - leaf type { - type union { - type identityref { - base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT; - } - type identityref { - base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT; - } - } - description - "Type of component as identified by the system"; - } - - leaf id { - type string; - description - "Unique identifier assigned by the system for the - component"; - } - - leaf location { - type string; - description - "System-supplied description of the location of the - component within the system. This could be a bay position, - slot number, socket location, etc. For component types that - have an explicit slot-id attribute, such as linecards, the - system should populate the more specific slot-id."; - } - - leaf description { - type string; - description - "System-supplied description of the component"; - } - - leaf mfg-name { - type string; - description - "System-supplied identifier for the manufacturer of the - component. This data is particularly useful when a - component manufacturer is different than the overall - device vendor."; - } - - leaf mfg-date { - type oc-yang:date; - description - "System-supplied representation of the component's - manufacturing date."; - } - - leaf hardware-version { - type string; - description - "For hardware components, this is the hardware revision of - the component."; - } - - leaf firmware-version { - type string; - description - "For hardware components, this is the version of associated - firmware that is running on the component, if applicable."; - } - - leaf software-version { - type string; - description - "For software components such as operating system or other - software module, this is the version of the currently - running software."; - } - - leaf serial-no { - type string; - description - "System-assigned serial number of the component."; - } - - leaf part-no { - type string; - description - "System-assigned part number for the component. This should - be present in particular if the component is also an FRU - (field replaceable unit)"; - } - - leaf removable { - type boolean; - description - "If true, this component is removable or is a field - replaceable unit"; - } - - leaf oper-status { - type identityref { - base oc-platform-types:COMPONENT_OPER_STATUS; - } - description - "If applicable, this reports the current operational status - of the component."; - } - - leaf empty { - type boolean; - default false; - description - "The empty leaf may be used by the device to indicate that a - component position exists but is not populated. Using this - flag, it is possible for the management system to learn how - many positions are available (e.g., occupied vs. empty - linecard slots in a chassis)."; - } - - leaf parent { - type leafref { - path "../../config/name"; - } - description - "Reference to the name of the parent component. Note that - this reference must be kept synchronized with the - corresponding subcomponent reference from the parent - component."; - } - } - - grouping platform-component-temp-alarm-state { - description - "Temperature alarm data for platform components"; - - // TODO(aashaikh): consider if these leaves could be in a - // reusable grouping (not temperature-specific); threshold - // may always need to be units specific. - - leaf alarm-status { - type boolean; - description - "A value of true indicates the alarm has been raised or - asserted. The value should be false when the alarm is - cleared."; - } - - leaf alarm-threshold { - type uint32; - description - "The threshold value that was crossed for this alarm."; - } - - leaf alarm-severity { - type identityref { - base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY; - } - description - "The severity of the current alarm."; - } - } - - grouping platform-component-power-state { - description - "Power-related operational state for device components."; - - leaf allocated-power { - type uint32; - units watts; - description - "Power allocated by the system for the component."; - } - - leaf used-power { - type uint32; - units watts; - description - "Actual power used by the component."; - } - } - - grouping platform-component-temp-state { - description - "Temperature state data for device components"; - - container temperature { - description - "Temperature in degrees Celsius of the component. Values include - the instantaneous, average, minimum, and maximum statistics. If - avg/min/max statistics are not supported, the target is expected - to just supply the instant value"; - - uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius; - uses platform-component-temp-alarm-state; - } - } - - grouping platform-component-memory-state { - description - "Per-component memory statistics"; - - container memory { - description - "For components that have associated memory, these values - report information about available and utilized memory."; - - leaf available { - type uint64; - units bytes; - description - "The available memory physically installed, or logically - allocated to the component."; - } - - // TODO(aashaikh): consider if this needs to be a - // min/max/avg statistic - leaf utilized { - type uint64; - units bytes; - description - "The memory currently in use by processes running on - the component, not considering reserved memory that is - not available for use."; - } - } - } - - grouping platform-anchors-top { - description - "This grouping is used to add containers for components that - are common across systems, but do not have a defined schema - within the openconfig-platform module. Containers should be - added to this grouping for components that are expected to - exist in multiple systems, with corresponding modules - augmenting the config/state containers directly."; - - container chassis { - description - "Data for chassis components"; - - container config { - description - "Configuration data for chassis components"; - } - - container state { - config false; - description - "Operational state data for chassis components"; - } - } - -// TODO(aashaikh): linecard container is already defined in -// openconfig-platform-linecard; will move to this module -// in future. - /* - container linecard { - description - "Data for linecard components"; - - container config { - description - "Configuration data for linecard components"; - } - - container state { - config false; - description - "Operational state data for linecard components"; - } - } - */ - - container port { - description - "Data for physical port components"; - - container config { - description - "Configuration data for physical port components"; - } - - container state { - config false; - description - "Operational state data for physical port components"; - } - } - -// TODO(aashaikh): transceiver container is already defined in -// openconfig-platform-transceiver; will move to this module -// in future. - /* - container transceiver { - description - "Data for transceiver components"; - - container config { - description - "Configuration data for transceiver components"; - } - - container state { - config false; - description - "Operational state data for transceiver components"; - } - } - */ - - container power-supply { - description - "Data for power supply components"; - - container config { - description - "Configuration data for power supply components"; - } - - container state { - config false; - description - "Operational state data for power supply components"; - } - } - - container fan { - description - "Data for fan components"; - - container config { - description - "Configuration data for fan components"; - } - - container state { - config false; - description - "Operational state data for fan components"; - } - } - - container fabric { - description - "Data for fabric components"; - - container config { - description - "Configuration data for fabric components"; - } - - container state { - config false; - description - "Operational state data for fabric components"; - } - } - - container storage { - description - "Data for storage components"; - - container config { - description - "Configuration data for storage components"; - } - - container state { - config false; - description - "Operational state data for storage components"; - } - } - - container cpu { - description - "Data for cpu components"; - - container config { - description - "Configuration data for cpu components"; - } - - container state { - config false; - description - "Operational state data for cpu components"; - } - } - - container integrated-circuit { - description - "Data for chip components, such as ASIC, NPUs, etc."; - - container config { - description - "Configuration data for chip components"; - } - - container state { - config false; - description - "Operational state data for chip components"; - } - } - - container backplane { - description - "Data for backplane components"; - - container config { - description - "Configuration data for backplane components"; - } - - container state { - config false; - description - "Operational state data for backplane components"; - } - } - } - - grouping platform-component-top { - description - "Top-level grouping for components in the device inventory"; - - container components { - description - "Enclosing container for the components in the system."; - - list component { - key "name"; - description - "List of components, keyed by component name."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "References the component name"; - } - - container config { - description - "Configuration data for each component"; - - uses platform-component-config; - } - - container state { - - config false; - - description - "Operational state data for each component"; - - uses platform-component-config; - uses platform-component-state; - uses platform-component-temp-state; - uses platform-component-memory-state; - uses platform-component-power-state; - } - - uses platform-component-properties-top; - uses platform-subcomponent-ref-top; - uses platform-anchors-top; - } - } - } - - - // data definition statements - - uses platform-component-top; - - - // augments - - -} diff --git a/src/plugins/yang/openconfig/openconfig-policy-forwarding.yang b/src/plugins/yang/openconfig/openconfig-policy-forwarding.yang deleted file mode 100644 index 63dbf78..0000000 --- a/src/plugins/yang/openconfig/openconfig-policy-forwarding.yang +++ /dev/null @@ -1,119 +0,0 @@ -module openconfig-policy-forwarding { - yang-version "1"; - - namespace "http://openconfig.net/yang/policy-forwarding"; - - prefix "oc-pf"; - - import openconfig-extensions { prefix "oc-ext"; } - - // Include submodules. - include openconfig-pf-forwarding-policies; - include openconfig-pf-path-groups; - include openconfig-pf-interfaces; - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - relating to policy-based forwarding. Policy-based forwarding is - utilised when a system chooses how to forward packets (including - applying data-plane operations such as encapsulation or - decapsulation) based on policies other than destination L2 or L3 - header. Typically, systems may implement: - - - IP policy-based routing, where routing may be done based on the - source plus destination of an IP packet; information within the - L4 header; or some combination of both. - - Encapsulation or decapsulation based on certain policy - information - for example, matching particular IP destinations - and decapsulating GRE headers. - - Class-based selection of egress routes - such as class-based - selection of an egress MPLS path. - - The policies that are defined in this model are applied to a - particular ingress context of a network element (e.g., interface) - and are defined to apply following other interface policy such as - QoS classification and access control lists. - - This module defines: - - - policy-forwarding - | - |--- policies - | |-- policy - | |-- [match criteria] How packets are defined to - | | match policy. - | |-- [forwarding-action] How packets matching should - | be forwarded. - |--- interfaces - | |-- interfaces - | | -- apply-forwarding-policy Forwarding policy to - | used on the interface. - |--- path-selection-groups - |-- path-selection-group A group of forwarding resources - that are grouped for purposes - of next-hop selection. - - A forwarding-policy specifies the match criteria that it intends - to use to determine the packets that it reroutes - this may - consist of a number of criteria, such as DSCP. The action of the - policy results in a forwarding action being applied to matching - packets. For example, decapsulating the packet from a GRE header. - In order to enact the policy based on particular interfaces - the - forwarding-policy is applied to an interface via referencing it - within an 'apply-forwarding-policy' statement associated with an - interface. - - In some cases (e.g., Class-Based Tunnel Selection) the forwarding - action does not resolve to a single egress action, and rather - normal forwarding rules are to be applied but considering a subset - of forwarding resources. In these cases, a path-selection-group - can be created, referencing the subset of forwarding paths that - should be used for the egress selection. In the case that a subset - of MPLS LSPs are eligible for, say, DSCP 46 marked packets, a - path-selection-group is created, referencing the subset of LSPs. - The forwarding action of the corresponding policy is set to - PATH_GROUP and references the configured group of LSPs."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2017-06-21" { - description - "Amend policy forwarding model based on ACL changes."; - reference "0.2.0"; - } - - revision "2017-02-28" { - description - "Initial public release of policy forwarding."; - reference "0.1.0"; - } - - revision "2016-11-08" { - description - "Initial revision."; - reference "0.0.1"; - } - - - grouping policy-forwarding-top { - description - "Top-level grouping for Policy Forwarding"; - - container policy-forwarding { - description - "Configuration and operational state relating to policy-forwarding within - a network instance."; - - uses pf-forwarding-policy-structural; - uses pf-interfaces-structural; - uses pf-path-groups-structural; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-probes-types.yang b/src/plugins/yang/openconfig/openconfig-probes-types.yang deleted file mode 100644 index 0b4e1bd..0000000 --- a/src/plugins/yang/openconfig/openconfig-probes-types.yang +++ /dev/null @@ -1,75 +0,0 @@ -module openconfig-probes-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/probes/types"; - - prefix "oc-probes-types"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines types related to the probes."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2017-09-05" { - description - "Initial public revision"; - reference "0.1.0"; - } - - typedef test-type { - type enumeration { - enum ICMP { - description - "Send ICMP echo requests."; - } - enum ICMP6 { - description - "Send ICMP6 echo requests."; - } - enum ICMP_TIMESTAMP { - description - "Send ICMP timestamp requests."; - } - enum ICMP6_TIMESTAMP { - description - "Sedn ICMP6 timestamp requests."; - } - enum TCP { - description - "Send TPC packets."; - } - enum UDP { - description - "Send UDP packets."; - } - enum UDP_TIMESTAMP { - description - "Send UDP packets with timestamp."; - } - enum HTTP_GET { - description - "Execute HTTP GET requests."; - } - enum HTTP_GET_META { - description - "Execute HTTP GET requests of metadata."; - } - } - description - "Type definition with enumerations describing the basis of - the probe test type identifier"; - } - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-probes.yang b/src/plugins/yang/openconfig/openconfig-probes.yang deleted file mode 100644 index 8c179f3..0000000 --- a/src/plugins/yang/openconfig/openconfig-probes.yang +++ /dev/null @@ -1,569 +0,0 @@ -module openconfig-probes { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/probes"; - - prefix "oc-probes"; - - import ietf-yang-types { prefix yang; } - import openconfig-types { prefix oc-types; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-probes-types { prefix oc-probes-types; } - - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - for the probes. - A probe consists on a group of tests, each test being a - source-destination pair to poll. The destination can be either - IP Address (and eventually port) or URL, depending on the - nature of the test. The test can send ICMP, UDP, TCP, or HTTP - requests. - Each test groups a list of test items, the test results - being an overall view or average of the items list. - However, the test preserves only a limited set of history - items, whose length can be controlled using the history-size."; - - oc-ext:openconfig-version "0.0.1"; - - revision "2017-09-05" { - description - "Initial public revision"; - reference "0.0.1"; - } - -grouping test-target { - description - "Groups the config and state containers - for an individual test."; - - container target { - description - "The target configuration of the test. - The nature of the target depends on the probe type: - for HTTP probes we need to provide an URL to poll, - while ICMP probes require an IP address to monitor."; - - container config { - description - "Configuration data for the test target."; - - uses test-target-base; - } - - container state { - config false; - - description - "Operational data for the test target."; - - uses test-target-base; - } - - } - -} - - grouping test-target-base { - description - "Targe types for the probe test."; - - leaf address { - type oc-inet:ip-address; - description - "IP address of the target, either IPv4 or IPv6."; - } - - leaf port { - type oc-inet:port-number; - description - "Destination port."; - } - - leaf url { - type oc-inet:url; - description - "Target URL to probe."; - } - -} - - grouping probe-test-config-base { - description - "Definition of test details."; - - leaf test-type { - type oc-probes-types:test-type; - description - "The type of the probe test."; - mandatory true; - } - - leaf count { - type yang:counter64; - description - "The number of probes per test."; - } - - leaf interval { - type yang:counter64; - description - "Time between two consecutive probes."; - } - - leaf source { - type oc-inet:ip-address; - description - "Source address used when probing, either IPv4 or IPv6."; - } - - leaf history-size { - type yang:counter64; - description - "The number of history entries stored."; - } - - leaf source-port { - type oc-inet:port-number; - description - "Source number used."; - } - - leaf dscp { - type oc-inet:dscp; - description - "DSCP code points"; - } - - } - - grouping probe-test-state-history-item-base { - description - "The test item results counters and statistics. - An item presents the results of a single execution - of the test. - The results of the test depend on the values - of the total items, or an average over a certain - period of time."; - - leaf id { - type yang:counter64; - description - "The test item ID."; - } - - leaf timestamp { - type oc-types:timeticks64; - description - "The test timestamp. - This is not the timestamp when the test - was actually executed nither when it finished. - Should be the timestamp when the test has been scheduled. - It may not be the same with start-timestamp."; - } - - leaf start-timestamp { - type oc-types:timeticks64; - description - "The timestamp when the test started."; - } - - leaf end-timestamp { - type oc-types:timeticks64; - description - "The timestamp when the test finished."; - } - - leaf test-duration { - type yang:counter64; - description - "The duration of the test, in microseconds."; - } - - leaf failed { - type boolean; - description - "Whether the test failed or succeeded."; - } - - leaf probes-sent { - type yang:counter64; - description - "Number of test probes sent."; - } - - leaf probes-received { - type yang:counter64; - description - "Number of test probes received."; - } - - leaf loss-percentage { - type oc-types:percentage; - description - "The loss percentage."; - } - - leaf jitter { - type yang:counter64; - description - "The round trip jitter, in microseconds."; - } - - leaf min-delay { - type yang:counter64; - description - "The minimum delay recorded during the test, in microseconds."; - } - - leaf max-delay { - type yang:counter64; - description - "The maximum delay recorded during the test, in microseconds."; - } - - leaf avg-delay { - type yang:counter64; - description - "The average delay recorded during the test, in microseconds."; - } - - leaf stddev-delay { - type yang:counter64; - description - "The standard deviation of the delay of the test."; - } - - } - - grouping probe-test-state-history-item { - description - "A history item of the probe results."; - - container state { - - config false; - - description - "A history item of the probe results: operational data only."; - - uses probe-test-state-history-item-base; - } - - } - - grouping probe-test-state-history { - - description - "The history of the test results."; - - container items { - - description - "The list of items in the probe history. - The length depends on the history size."; - - list item { - key "id"; - description - "List of history items."; - - leaf id { - type leafref { - path "../state/id"; - } - description - "Reference to the history entry ID."; - } - - uses probe-test-state-history-item; - } - - } - - } - - grouping probe-test-state-results { - description - "The test results counters and statistics."; - - leaf timestamp { - type oc-types:timeticks64; - description - "The test timestamp. - This is not the timestamp when the test - was actually executed nither when it finished. - Should be the timestamp when the test has been scheduled. - It may not be the same with start-timestamp."; - } - - leaf start-timestamp { - type oc-types:timeticks64; - description - "The timestamp when the test started."; - } - - leaf last-test-timestamp { - type oc-types:timeticks64; - description - "The timestamp when the test finished."; - } - - leaf test-duration { - type yang:counter64; - description - "The duration of the test, in microseconds."; - } - - leaf failed { - type boolean; - description - "Whether the test failed or succeeded."; - } - - leaf probes-sent { - type yang:counter64; - description - "Number of test probes sent."; - } - - leaf probes-received { - type yang:counter64; - description - "Number of test probes received."; - } - - leaf loss-percentage { - type oc-types:percentage; - description - "The loss percentage."; - } - - leaf jitter { - type yang:counter64; - description - "The round trip jitter, in microseconds."; - } - - leaf min-delay { - type yang:counter64; - description - "The minimum delay recorded during the test, in microseconds."; - } - - leaf max-delay { - type yang:counter64; - description - "The maximum delay recorded during the test, in microseconds."; - } - - leaf avg-delay { - type yang:counter64; - description - "The average delay recorded during the test, in microseconds."; - } - - leaf stddev-delay { - type yang:counter64; - description - "The standard deviation of the delay of the test."; - } - - - } - - grouping probe-test-state { - - description - "Operational data and results for the probes."; - - } - - grouping probe-test-config { - description - "Definition of test details."; - - leaf name { - type string; - description - "The name of the test probe"; - mandatory true; - } - - leaf enabled { - type boolean; - default true; - description - "Whether the test is enabled."; - } - - uses probe-test-config-base; - - } - - grouping probe-tests-top { - description - "Top-level grouping for the tests withing a probe."; - - list test { - key "name"; - description - "List of tests associated with this probe."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for the test of this probe."; - - uses probe-test-config; - } - - container state { - - config false; - - description - "Operational state data"; - - uses probe-test-config; - uses probe-test-state; - } - - uses test-target; - - container results { - description - "Contains the results of the tests."; - - container state { - - config false; - - description - "Results of this test: operational data only"; - - uses probe-test-state-results; - } - - container history { - - config false; - - description - "Historical data of the tests."; - - uses probe-test-state-history; - } - - } - - } - // end list of probes - - } - - grouping probe-config { - description - "Definition of probe details."; - - leaf name { - type string; - description - "The name of the probe."; - mandatory true; - } - - leaf enabled { - type boolean; - default true; - description - "Whether the probe is enabled."; - } - - } - - grouping probe-state { - description - "Definition of probes operation data."; - } - - grouping probes-top { - description - "Top-level grouping for probes model"; - - list probe { - key "name"; - description - "List of probes configured."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for the probes."; - - uses probe-config; - } - - container state { - - config false; - - description - "Operational state data"; - - uses probe-config; - uses probe-state; - } - - container tests { - - description - "The tests associated to be executed for the probe."; - - uses probe-tests-top; - } - - } - // end list of probes - - } - - grouping openconfig-probes-top { - - description - "The top level grouping of the probes model."; - - container probes { - description - "The container containing the list of probes."; - - uses probes-top; - } - - } - - uses openconfig-probes-top; - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-procmon.yang b/src/plugins/yang/openconfig/openconfig-procmon.yang deleted file mode 100644 index fa3bbde..0000000 --- a/src/plugins/yang/openconfig/openconfig-procmon.yang +++ /dev/null @@ -1,165 +0,0 @@ -module openconfig-procmon { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/system/procmon"; - - prefix "oc-proc"; - - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module provides data definitions for process health - monitoring of one or more processes running on the system."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2017-09-18" { - description - "Updated to use OpenConfig types modules"; - reference "0.3.0"; - } - - revision "2017-07-06" { - description - "Move to oc-inet types, add IETF attribution, add RADIUS - counters, changed password leaf names to indicate hashed"; - reference "0.2.0"; - } - - revision "2017-01-29" { - description - "Initial public release"; - reference "0.1.0"; - } - - - // grouping statements - - grouping procmon-processes-top { - description - "Top level grouping for attributes for processes."; - - container processes { - description - "Parameters related to all monitored processes"; - - list process { - key "pid"; - config false; - description - "List of monitored processes"; - - leaf pid { - type leafref { - path "../state/pid"; - } - description - "Reference to the process pid key"; - } - - container state { - config false; - description - "State parameters related to monitored processes"; - - uses procmon-process-attributes-state; - } - } - } - } - - grouping procmon-process-attributes-state { - description - "Attributes state definitions for a process"; - - leaf pid { - type uint64; - description - "The process pid"; - } - - leaf name { - type string; - description - "The process name"; - } - - leaf-list args { - type string; - description - "Current process command line arguments. Arguments with - a parameter (e.g., --option 10 or -option=10) should be - represented as a single element of the list with the - argument name and parameter together. Flag arguments, i.e., - those without a parameter should also be in their own list - element."; - } - - leaf start-time { - type uint64; - units "ns"; - description - "The time at which this process started, - reported as nanoseconds since the UNIX epoch. The - system must be synchronized such that the start-time - can be reported accurately, otherwise it should not be - reported."; - } - - leaf uptime { - type oc-types:timeticks64; - description - "Amount of time elapsed since this process started."; - } - - leaf cpu-usage-user { - type oc-types:timeticks64; - description - "CPU time consumed by this process in user mode."; - } - - leaf cpu-usage-system { - type oc-types:timeticks64; - description - "CPU time consumed by this process in kernel mode."; - } - - leaf cpu-utilization { - type oc-types:percentage; - description - "The percentage of CPU that is being used by the process."; - } - - leaf memory-usage { - type uint64; - units "bytes"; - description - "Bytes allocated and still in use by the process"; - } - - leaf memory-utilization { - type oc-types:percentage; - description - "The percentage of RAM that is being used by the process."; - } - } - - // augment statements - - // rpc statements - - // notification statements -} diff --git a/src/plugins/yang/openconfig/openconfig-qos-elements.yang b/src/plugins/yang/openconfig/openconfig-qos-elements.yang deleted file mode 100644 index b862db2..0000000 --- a/src/plugins/yang/openconfig/openconfig-qos-elements.yang +++ /dev/null @@ -1,1304 +0,0 @@ -submodule openconfig-qos-elements { - - belongs-to openconfig-qos { - prefix "oc-qos"; - } - - import openconfig-extensions { prefix oc-ext; } - import openconfig-qos-types { prefix oc-qos-types; } - import openconfig-packet-match { prefix oc-pkt-match; } - import openconfig-platform { prefix oc-platform; } - import openconfig-types { prefix oc-types; } - - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This submodule defines configuration and operational state - data associated with QoS elements. The primary elements of - the model include: - - classifiers: match packets with a specific characteristic - - forwarding groups: logical class of packets that receive - common forwarding treatment - - queues: collection of packets to be scheduled, including - a queue management scheme - - schedulers: sequence of one more elements that schedule - packets for transmission, including policer and shaper - functions"; - - oc-ext:openconfig-version "0.2.0"; - - revision "2016-12-16" { - description - "Fix incorrect interface-ref placement"; - reference "0.2.0"; - } - - revision "2016-06-03" { - description - "Initial revision"; - reference "0.1.0"; - } - - grouping qos-classifier-term-config { - description - "Configuration data for list of match criteria in a QoS - classifier"; - - leaf id { - type string; - description - "Identifier for the match term"; - } - } - - grouping qos-classifier-term-state { - description - "Operational state data for list of match criteria in a QoS - classifier"; - } - - grouping qos-classifier-term-action-config { - description - "Configuration parameters for actions for a classifier term."; - - leaf target-group { - type leafref { - // Current location: - // /qos/classifiers/classifier/terms/term/actions/config/target-group - path "../../../../../../../forwarding-groups/forwarding-group/" + - "config/name"; - } - description - "References the forwarding group or class to which the - matched packets should be assigned"; - } - } - - grouping qos-classifier-terms-top { - description - "Top-level grouping for list of match criteria in a QoS - classifier"; - - container terms { - description - "Enclosing container for ths list of terms"; - - list term { - key "id"; - description - "List of match terms used in the classifier"; - - leaf id { - type leafref { - path "../config/id"; - } - description - "Reference to id list key."; - } - - container config { - description - "Configuration data for list of match criteria in a QoS - classifier"; - - uses qos-classifier-term-config; - } - - container state { - config false; - description - "Operational state data for list of match criteria in a - QoS classifier"; - - uses qos-classifier-term-config; - uses qos-classifier-term-state; - } - - container conditions { - description - "Conditions for the classifier term. Packets must match all of - the criteria specified within the match condition to be considered - matching the term."; - - // TODO(robjs): Consider whether we should have classifiers - // that can match >1 different value of a field, or whether - // this should require different match terms within the - // classifier. - uses oc-pkt-match:ethernet-header-top; - uses oc-pkt-match:ipv4-protocol-fields-top; - uses oc-pkt-match:ipv6-protocol-fields-top; - uses oc-pkt-match:transport-fields-top; - uses oc-pkt-match:mpls-header-top; - } - - container actions { - description - "Actions to be applied for packets matching the specified - classification rules."; - - container config { - description - "Actions to be applied to packets that match the classifier - term."; - - uses qos-classifier-term-action-config; - } - - container state { - config false; - description - "Operational state parameters associated with classifier term - actions"; - - uses qos-classifier-term-action-config; - } - - container remark { - description - "Remark actions to be associated with packets that match the - classifier term. Where a packet matches these criteria, the - specified rewrite actions should be performed."; - - uses qos-common-remark-actions; - } - } - } - } - } - - grouping qos-classifier-config { - description - "Configuration data for classifiers"; - - leaf name { - type string; - description - "User-assigned name of the classifier"; - } - - leaf type { - type enumeration { - enum IPV4 { - description - "Classifier matches and operates - on packets with IPv4 headers."; - } - enum IPV6 { - description - "Classifier matches and operates - on packets with IPv6 headers."; - } - enum MPLS { - description - "Classifier matches and operates - on packets with MPLS headers."; - } - enum ETHERNET { - description - "Classifier matches and operates - on fields within the L2 ETHERNET - headers."; - } - } - description - "Type of classifier."; - } - } - - grouping qos-classifier-state { - description - "Operational state data for classifiers"; - - } - - grouping qos-classifier-top { - description - "Top-level grouping for classifier data"; - - container classifiers { - description - "Enclosing container for QoS classifiers"; - - list classifier { - key "name"; - description - "List of classifier elements"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to list key name"; - } - - container config { - description - "Configuration data for classifers"; - - uses qos-classifier-config; - } - - container state { - config false; - description - "Operational state data for classifiers"; - - uses qos-classifier-config; - uses qos-classifier-state; - } - - uses qos-classifier-terms-top; - } - } - } - - grouping qos-fabric-trace-config { - description - "Configuration data for fabric trace data"; - - leaf source { - type leafref { - path "/oc-platform:components/oc-platform:component" + - "/oc-platform:config/oc-platform:name"; - } - description - "Source component for fabric trace data"; - } - - leaf dest { - type leafref { - path "/oc-platform:components/oc-platform:component" + - "/oc-platform:config/oc-platform:name"; - } - description - "Destination component for fabric trace data"; - } - } - - grouping qos-forwarding-group-config { - description - "Configuration data for forwarding groups"; - - leaf name { - type string; - description - "Name of the forwarding group"; - } - - // TODO(robjs, Simon G): Discuss optionally moving - // this to a high/low priority indicator, if this - // is common across implementations. - leaf fabric-priority { - type uint8; - description - "Set the priority for the forwarding group for - local transmission through the device, e.g., - across a switching fabric. Higher priorities - are considered to be better, such that traffic - with fabric priority 128 is considered to be - higher priority than that with fabric priority - 0."; - } - - leaf output-queue { - type leafref { - path "../../../../queues/queue/config/name"; - } - description - "Queue for packets in this forwarding group."; - } - } - - grouping qos-forwarding-group-state { - description - "Operational state data for forwarding groups"; - } - - grouping qos-forwarding-group-top { - description - "Top-level grouping for forwarding group data"; - - container forwarding-groups { - description - "Enclosing container for list of forwarding groups"; - - list forwarding-group { - key "name"; - description - "List of forwarding groups. Forwarding groups are - logical groups of traffic that will receive common - forwarding treatment."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to name list key"; - } - - container config { - description - "Configuration data for forwarding groups"; - - uses qos-forwarding-group-config; - } - - container state { - config false; - description - "Operational state data for forwarding groups"; - - uses qos-forwarding-group-config; - uses qos-forwarding-group-state; - } - } - } - } - - grouping qos-queue-red-common-config { - description - "Common configuration parameters applicable to RED and - its variants"; - - leaf enable-ecn { - type boolean; - default false; - description - "When set to true, the device should mark packets that are - ECN-capable rather than dropping them. The receiver is - expected to echo the congestion signal back to the sender - so that it may adjust its transmission rate accordingly. - When this leaf is false, the device drops packets according - to the RED/WRED probability, or all packets if the - average queue length is above the max threshold."; - } - } - - grouping qos-queue-red-common-state { - description - "Common operational state data applicable to RED and - its variants"; - - } - - grouping qos-queue-wred-config { - description - "Configuration data for WRED-managed queues"; - - // TODO(robjs, aashaikh): Add configuration for weighted RED - // within this grouping. - } - - grouping qos-queue-wred-state { - description - "Operational state data for WRED-managed queues"; - } - - grouping qos-queue-wred-top { - description - "Top-level grouping for WRED-managed queues"; - - container wred { - description - "Top-level container for WRED data"; - - container config { - description - "Configuration data for WRED"; - - uses qos-queue-wred-config; - } - - container state { - config false; - description - "Operational state data for WRED"; - - uses qos-queue-wred-config; - uses qos-queue-wred-state; - } - } - } - - grouping qos-queue-red-config { - description - "Configuration data for queues managed with RED"; - - leaf minth { - type uint64; - units bytes; - description - "The mininum threshold parameter for a RED-managed queue. - When the average queue length is less than minth, all - packets are admitted to the queue."; - } - - leaf maxth { - type uint64; - units bytes; - description - "The maximum threshold parameter for a RED-managed queue. - When the average queue length exceeds the maxth value, all - packets are dropped (or marked if ECN is enabled)."; - } - } - - grouping qos-queue-red-state { - description - "Operational state data for queues managed with RED"; - } - - grouping qos-queue-red-top { - description - "Top-level grouping for RED queues"; - - container red { - description - "Top-level container for data related to RED-managed - queues"; - - container config { - description - "Configuration data for RED queues"; - - uses qos-queue-red-config; - } - - container state { - config false; - description - "Operational state data for RED queues"; - - uses qos-queue-red-config; - uses qos-queue-red-state; - } - } - } - - - grouping qos-queue-config { - description - "Configuration data for QoS egress queues"; - - leaf name { - type string; - description - "User-defined name of the queue"; - } - - leaf queue-type { - type identityref { - base oc-qos-types:QOS_QUEUE_TYPE; - } - description - "Sets the type of the queue"; - } - } - - grouping qos-queue-state { - description - "Operational state data for egress queues"; - } - - grouping qos-queue-top { - description - "Top-level grouping for queue elements"; - - container queues { - description - "Enclosing container for the list of queues"; - - list queue { - key "name"; - description - "List of defined queues"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the queue name list key."; - } - - container config { - description - "Configuration data for queues"; - - uses qos-queue-config; - } - - container state { - config false; - description - "Operational state data for queues"; - - uses qos-queue-config; - uses qos-queue-state; - } - - uses qos-queue-red-top { - when "../config/queue-type = 'oc-qos-types:RED'" { - description - "RED configuration is valid when the queue-type - is set accordingly."; - } - } - uses qos-queue-wred-top { - when "../config/queue-type = 'oc-qos-types:WRED'" { - description - "WRED configuration is valid when the queue-type - is set accordingly."; - } - } - } - } - } - - grouping qos-scheduler-output-config { - description - "Configuration data for scheduler output operations"; - - leaf output-type { - type enumeration { - enum SCHEDULER { - description - "Scheduler output is a child scheduler, e.g. to - implement hierarchical schedulers."; - } - enum FWD_GROUP { - description - "Scheduler output is a forwarding group, e.g., when - performing ingress scheduling before packets traverse - a fabric to be processed by an egress forwarding - complex."; - } - enum INTERFACE { - description - "Scheduler output is an interface for forwarding."; - } - } - description - "Describes the type of output sink for the scheduler."; - } - - leaf child-scheduler { - // TODO: consider whether both child (output) and parent - // (input) references are needed; consider whether child - // reference should separate in-profile and out-of-profile - type leafref { - // current loc: - // /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/ - // output/config/child-scheduler - path "../../../../../../../scheduler-policies/scheduler-policy/" + - "config/name"; - } - when "../output-type = 'SCHEDULER'" { - description - "The child-scheduler leaf is valid only when - the output type of the scheduler is a child scheduler"; - } - description - "When the scheduler output type is a child scheduler, - this leaf provides a reference to the downstream - scheduler."; - } - - leaf output-fwd-group { - type leafref { - path "../../../../../../../forwarding-groups/forwarding-group" + - "/config/name"; - } - when "../output-type = 'FWD_GROUP'" { - description - "The output-fwd-group leaf is valid only when - the output type of the scheduler is a forwarding group"; - } - description - "When the scheduler output type is a forwarding group, - this leaf provides a reference to the forwarding group."; - } - } - - grouping qos-scheduler-output-state { - description - "Operational state data for scheduler output"; - } - - grouping qos-scheduler-output-top { - description - "Top-level grouping for data related to scheduler output"; - - container output { - description - "Top-level container for scheduler output data"; - - container config { - description - "Configuration data for scheduler output"; - - uses qos-scheduler-output-config; - } - - container state { - config false; - description - "Operational state data for scheduler output"; - - uses qos-scheduler-output-config; - uses qos-scheduler-output-state; - } - } - } - - grouping qos-scheduler-inputs-config { - description - "Configuration data for scheduler input sources"; - - leaf id { - type string; - description - "User-defined identifier for the scheduler input"; - } - - leaf input-type { - type enumeration { - enum QUEUE { - description - "Input is a defined queue."; - } - enum IN_PROFILE { - description - "Input is in-profile traffic from a parent scheduler/ - shaper"; - } - enum OUT_PROFILE { - description - "Input is out-of-profile traffic from a parent - scheduler/shaper"; - } - } - description - "Describes the type of input source for the scheduler"; - } - - leaf queue { - type leafref { - // current loc: /qos/scheduler-policies/scheduler-policy/schedulers/ - // scheduler/inputs/input/config/queue - path "../../../../../../../../queues/queue/name"; - } - when "../input-type = 'QUEUE'" { - description - "The queue leaf is valid only when - the input type of the scheduler is a queue"; - } - description - "Reference to a queue that is an input source for the - scheduler"; - } - - leaf weight { - type uint64; - description - "For priority schedulers, this indicates the priority of - the corresponding input. Higher values indicate higher - priority. For weighted round-robin schedulers, this leaf - indicates the weight of the corresponding input."; - } - } - - grouping qos-scheduler-inputs-state { - description - "Operational state data for scheduler input sources"; - } - - grouping qos-scheduler-inputs-top { - description - "Top-level grouping for defining inputs to a scheduler."; - - container inputs { - description - "Enclosing container "; - - list input { - key "id"; - description - "List of input sources for the scheduler."; - - leaf id { - type leafref { - path "../config/id"; - } - description - "Reference to list key"; - } - - container config { - description - "Configuration data for scheduler input sources"; - - uses qos-scheduler-inputs-config; - } - - container state { - config false; - description - "Operational state data for scheduler input sources"; - - uses qos-scheduler-inputs-config; - uses qos-scheduler-inputs-state; - } - } - } - } - - grouping qos-scheduler-1r2c-config { - description - "Configuration data for 1 rate, 2 color scheduler."; - - leaf cir { - type uint64; - units bps; - description - "Committed information rate for the single-rate token - bucket scheduler. This value represents the rate at which - tokens are added to the bucket."; - } - - leaf cir-pct { - type oc-types:percentage; - description - "Committed information rate for the single-rate token - bucket scheduler. This value represents the rate at which - tokens are added to the bucket. It is expressed as a - percentage of the total bandwidth allocated to the - context in which the scheduler is referenced."; - } - - leaf cir-pct-remaining { - type oc-types:percentage; - description - "Committed information rate for the single-rate token - bucket scheduler. This value represents the rate at which - tokens are added to the bucket. It is expressed as a - percentage of the unallocated bandwidth available in the - context in which the scheduled is referenced."; - } - - leaf bc { - type uint32; - units bytes; - description - "Committed burst size for the single-rate token bucket - scheduler. This value represents the depth of the token - bucket."; - } - - leaf queuing-behavior { - type oc-qos-types:queue-behavior; - description - "The type of scheduler that is being configured."; - } - - // TODO(robjs): Add when statements to these parameters when the - // types of scheduler are agreed through review. - leaf max-queue-depth-bytes { - type uint32; - units bytes; - description - "When the scheduler is specified to be a shaper - the - maximum depth of the queue in bytes is the value - specified by this leaf."; - } - - leaf max-queue-depth-packets { - type uint32; - units packets; - description - "When the scheduler is specified to be a shaper - the - maximum depth of the queue in packets is the value - specified by this leaf."; - } - - leaf max-queue-depth-percent { - type oc-types:percentage; - description - "The queue depth specified as a percentage of the total - available buffer that is avaialble."; - } - } - - grouping qos-scheduler-1r2c-top { - description - "Top-level grouping for 1 rate, 2 color shapers"; - - container one-rate-two-color { - description - "Top-level container for data related to a 1 rate, 2 color - shaper."; - - container config { - description - "Configuration data for 1 rate, 2 color shapers"; - - uses qos-scheduler-1r2c-config; - } - - container state { - config false; - description - "Operational state data for 1 rate, 2 color shapers"; - - uses qos-scheduler-1r2c-config; - } - - container conform-action { - description - "Action to be applied to packets that are scheduled within the - CIR of the one-rate, two-colour scheduler. Packets that receive - a token from the in-CIR bucket are said to be conforming and - have all of the specified actions applied."; - - container config { - description - "Configuration parameters relating to conforming packets for the - 1r2c scheduler."; - - uses qos-common-remark-actions-config; - } - - container state { - config false; - description - "Operational state parameters relating to conforming packets - for the 1r2c scheduler."; - - uses qos-common-remark-actions-config; - } - } - - container exceed-action { - description - "Action to be applied to packets that are scheduled above the CIR - of the one-rate, two-colour shaper. Packets that do not receive a - token from the in-CIR bucket are said to be exceeding, and have - all of the specified actions applied."; - - container config { - description - "Configuration parameters relating to exceeding packets for - the 1r2c scheduler."; - - uses qos-common-remark-actions-config; - uses qos-common-scheduler-actions-config; - } - - container state { - config false; - description - "Operational state parameters relating to exceeding - packets for the 1r2c scheduler."; - - uses qos-common-remark-actions-config; - uses qos-common-scheduler-actions-config; - } - } - } - } - - grouping qos-scheduler-2r3c-config { - description - "Configuration data for 2 rate, 3 color policer"; - - leaf cir { - type uint64; - units bps; - description - "Committed information rate for the dual-rate token - bucket policer. This value represents the rate at which - tokens are added to the primary bucket."; - } - - leaf cir-pct { - type oc-types:percentage; - description - "Committed information rate for the dual-rate token bucket - policer. This value represents the rate at which tokens - are added to the primary bucket. It is expressed as a - percentage of the total bandwidth available within the - context the scheduler is instantiated."; - } - - leaf cir-pct-remaining { - type oc-types:percentage; - description - "Committed information rate for the dual-rate token - bucket policer. This value represents the rate at which - tokens are added to the primary bucket. It is expressed - as a percentage of the remaining bandwidth within the - context the scheduler is instantiated."; - } - - leaf pir { - type uint64; - units bps; - description - "Peak information rate for the dual-rate token bucket - policer. This value represents the rate at which tokens - are added to the secondary bucket."; - } - - leaf pir-pct { - type oc-types:percentage; - description - "Peak information rate for the dual-rate token bucket - policer. This value represents the rate at which tokens - are added to the secondary bucket. The value is expressed - as a percentage of the total bandwidth available in the - context in which the scheduler is instantiated."; - } - - leaf pir-pct-remaining { - type oc-types:percentage; - description - "Peak information rate for the dual-rate token - bucket policer. This value represents the rate at which - tokens are added to the secondary bucket. It is expressed - as a percentage of the remaining bandwidth within the - context the scheduler is instantiated."; - } - - leaf bc { - type uint32; - units bytes; - description - "Committed burst size for the dual-rate token bucket - policer. This value represents the depth of the token - bucket."; - } - - leaf be { - type uint32; - units bytes; - description - "Excess burst size for the dual-rate token bucket policer. - This value represents the depth of the secondary bucket."; - } - } - - grouping qos-scheduler-2r3c-top { - description - "Top-level grouping for 2 rate, 3 color policers.."; - - container two-rate-three-color { - description - "Top-level container for data for a 2 rate, 3 color policer."; - - container config { - description - "Configuration data for 2 rate, 3 color policers."; - - uses qos-scheduler-2r3c-config; - } - - container state { - config false; - description - "Operational state data for 2 rate, 3 color policers."; - - uses qos-scheduler-2r3c-config; - } - - container conform-action { - description - "Action to be applied to the packets that are scheduled - within the CIR of the policer. All packets that receive - a token from this bucket have all actions specified - applied to them"; - - container config { - description - "Configuration parameters for the conform action of a - 2r3c policer."; - uses qos-common-remark-actions-config; - } - - container state { - config false; - description - "Operational state parameters relating to the conform - action of a 2r3c policer."; - uses qos-common-remark-actions-config; - } - } - - container exceed-action { - description - "Action to be applied to the packets that are scheduled - within the PIR of the policer. Packets that receive a - token from within the PIR allocation have all the - specified actions applied to them"; - - container config { - description - "Configuration parameters relating to the action - applied to exceeding packets."; - - uses qos-common-remark-actions-config; - uses qos-common-scheduler-actions-config; - } - - container state { - config false; - description - "Operational state parameters relating to the action - applied to exceeding packets."; - - uses qos-common-remark-actions-config; - uses qos-common-scheduler-actions-config; - } - } - - container violate-action { - description - "Action to be applied to the packets that are scheduled - above the PIR of the policer. Packets that do not receive - a token from either bucket have all specified actions - applied to them."; - - container config { - description - "Configuration parameters relating to the action - applied to violating packets."; - - uses qos-common-remark-actions-config; - uses qos-common-scheduler-actions-config; - } - - container state { - config false; - description - "Operational state parameters relating to the action - applied to violating packets."; - - uses qos-common-remark-actions-config; - uses qos-common-scheduler-actions-config; - } - } - } - } - - grouping qos-scheduler-config { - description - "Configuration data for QoS schedulers"; - - leaf sequence { - type uint32; - description - "Sequence number for the scheduler within the scheduler - policy. Schedulers are processed from lowest sequence - to highest."; - } - - leaf type { - type identityref { - base oc-qos-types:QOS_SCHEDULER_TYPE; - } - description - "Sets the type of scheduler, i.e. the scheduling algorithm - used to serve inputs."; - } - - leaf priority { - type enumeration { - enum STRICT { - description - "This scheduler term is considered as a strict priority - term - such that packets that arrive in the queue are - immediately serviced."; - } - } - description - "Priority of the scheduler within the scheduler policy."; - } - } - - grouping qos-scheduler-state { - description - "Operational state data for QoS schedulers"; - } - - grouping qos-scheduler-policy-config { - description - "Configuration parameters relating to a scheduler policy"; - - leaf name { - type string; - description - "Name for the scheduler policy."; - } - } - - grouping qos-scheduler-top { - description - "Top-level grouping for the set of defined QoS schedulers"; - - container scheduler-policies { - description - "Enclosing container for the list of configured scheduler policies."; - - list scheduler-policy { - key "name"; - - description - "List of scheduler policies. A scheduler policy is a set of schedulers - that are to be applied together. Each scheduler within a scheduler - policy takes an input, and outputs it according to a scheduling - discipline that is specified within it. The schedulers consume - resources according to the specification that is provided - which - may be absolute resource limits, or relative."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the name of the scheduler policy"; - } - - container config { - description - "Configuration parameters relating to a scheduler policy."; - uses qos-scheduler-policy-config; - } - - container state { - config false; - description - "Operational state parameters relating to a scheduler policy."; - uses qos-scheduler-policy-config; - } - - container schedulers { - description - "Schedulers within the scheduler policy."; - - list scheduler { - key "sequence"; - description - "List of defined QoS traffic schedulers."; - - leaf sequence { - type leafref { - path "../config/sequence"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for QoS schedulers"; - - uses qos-scheduler-config; - } - - container state { - config false; - - description - "Operational state data for QoS schedulers"; - - uses qos-scheduler-config; - uses qos-scheduler-state; - } - - uses qos-scheduler-inputs-top; - uses qos-scheduler-output-top; - uses qos-scheduler-1r2c-top; - uses qos-scheduler-2r3c-top; - } - } - } - } - } - - grouping qos-common-remark-actions { - description - "Common grouping specifying actions related to re-marking - packets"; - - container config { - description - "Configuration parameters relating to remarking packets."; - uses qos-common-remark-actions-config; - } - - container state { - config false; - description - "Operational state parameters relating to remarking packets."; - uses qos-common-remark-actions-config; - } - } - - grouping qos-common-scheduler-actions-config { - description - "Configuration data for common actions of a QoS scheduler."; - - leaf drop { - type boolean; - description - "If set to true, packets within this context are dropped."; - } - } - - grouping qos-common-remark-actions-config { - description - "Configuration data for QoS re-marking actions"; - - leaf set-dscp { - type uint8; - description - "Sets the 6-bit DSCP (differentiated services code point) - value in the IP packet header."; - reference - "RFC 2474 - Definition of the Differentiated Services Field - (DS Field) in the IPv4 and IPv6 Headers"; - } - - leaf set-dot1p { - type uint8; - description - "Sets the 3-bit class-of-service value in the - Ethernet packet header for 802.1Q VLAN-tagged packets, - also known as PCP (priority code point)."; - reference - "IEEE 802.1Q-2014 - IEEE Standard for Local and metropolitan - area networks--Bridges and Bridged Networks"; - } - - leaf set-mpls-tc { - type uint8; - description - "Sets the 3-bit traffic class value (also referred to as EXP - or CoS) in MPLS packets."; - reference - "RFC 3270 - Multi-Protocol Label Switching (MPLS) Support of - Differentiated Services"; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-qos-interfaces.yang b/src/plugins/yang/openconfig/openconfig-qos-interfaces.yang deleted file mode 100644 index ae356a9..0000000 --- a/src/plugins/yang/openconfig/openconfig-qos-interfaces.yang +++ /dev/null @@ -1,660 +0,0 @@ -submodule openconfig-qos-interfaces { - - belongs-to openconfig-qos { - prefix "oc-qos"; - } - - // import openconfig-qos-elements { prefix oc-qos; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-yang-types { prefix oc-yang; } - - include openconfig-qos-elements; - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This submodule defines data related to quality-of-service - configuration and operational state associated with - interfaces."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2016-12-16" { - description - "Fix incorrect interface-ref placement"; - reference "0.2.0"; - } - - revision "2016-06-03" { - description - "Initial revision"; - reference "0.1.0"; - } - - grouping qos-interface-classifier-match-config { - description - "Configuration data for match terms in the classifier - associated with an interface"; - - leaf id { - type leafref { - // Current location: - // /qos/interfaces/interface/input/classifers/classifier/ - // terms/term/config/id - path "../../../../../../../../../classifiers/" + - "classifier[name=current()/../../../../config/name]/" + - "terms/term/config/id"; - - } - description - "Reference to match terms in the classifier"; - } - } - - grouping qos-interface-classifier-match-state { - description - "Operational state data for match terms in the classifier - associated with an interface"; - - leaf matched-packets { - type oc-yang:counter64; - description - "Count of the number of packets matching this classifier - match term on the interface."; - } - - leaf matched-octets { - type oc-yang:counter64; - description - "Count of the number of octets (bytes) matching this - classifier match term on the interface."; - } - - } - - grouping qos-interface-classifier-match-top { - description - "Top-level grouping for match terms in the classifier - associated with an interface"; - - container terms { - description - "Enclosing container for the list of match terms in the - classifier"; - - list term { - key "id"; - description - "List of match terms in the classifier associated with the - interface"; - - leaf id { - type leafref { - path "../config/id"; - } - description - "Reference to match term id list key"; - } - - container config { - description - "Configuration data for match terms in the classifier - associated with an interface"; - - uses qos-interface-classifier-match-config; - } - - container state { - config false; - description - "Operational state data for match terms in the classifier - associated with an interface"; - - uses qos-interface-classifier-match-config; - uses qos-interface-classifier-match-state; - } - } - } - } - - grouping qos-interface-classifier-top { - description - "Top-level grouping for a QoS classifier associated with an - interface"; - - container classifers { - description - "Classifiers to be applied to the interface."; - - list classifier { - key "type"; - - description - "A list of classifiers that should be applied to the interface"; - - leaf type { - type leafref { - path "../config/type"; - } - description - "Reference to the classifier name."; - } - - container config { - description - "Configuration parameters for the list of classifiers."; - uses qos-interface-classifers-config; - } - - container state { - config false; - description - "Operational state parameters for the list of classifiers."; - uses qos-interface-classifers-config; - } - - uses qos-interface-classifier-match-top; - } - } - } - - grouping qos-interface-classifers-config { - description - "Configuration parameters for the list of classifiers"; - - leaf name { - type leafref { - // current loc: /qos/interfaces/interface/input/classifiers/ - // classifier/config/name - path "../../../../../../../classifiers/classifier/config/name"; - } - description - "Reference to the classifier to be applied to ingress traffic on - the interface"; - } - - leaf type { - type enumeration { - enum IPV4 { - description - "Classifier matches IPv4 packets."; - value 4; - } - enum IPV6 { - description - "Classifier matches IPv6 packets."; - value 6; - } - enum MPLS { - description - "Classifier matches MPLS packets."; - } - } - description - "Type of packets matched by the classifier."; - } - } - - grouping qos-interface-queue-config { - description - "Configuration data for the queue associated with the - interface"; - - leaf name { - // TODO(robjs): Previously we proposed that the queue name here is - // only a queue that has been configured. However, in some cases we - // may want to have queues that have not been configured exist. - //type leafref { - // path "../../../../../../queues/queue/config/name"; - //} - type string; - description - "Reference to the queue associated with this interface. - A queue may be explicitly configured, or implicitly created - by the system based on default queues that are instantiated - by a hardware component, or are assumed to be default on - the system."; - } - } - - grouping qos-interface-queue-state { - description - "Operational state data for the queue associated with the - interface"; - - leaf max-queue-len { - type oc-yang:counter64; - units bytes; - description - "Maximum observed queue length"; - } - - leaf avg-queue-len { - type oc-yang:counter64; - units bytes; - description - "Average observed queue length"; - - } - - leaf transmit-pkts { - type oc-yang:counter64; - description - "Number of packets transmitted by this queue"; - } - - leaf transmit-octets { - type oc-yang:counter64; - description - "Number of octets trasmitted by this queue"; - } - - leaf dropped-pkts { - type oc-yang:counter64; - description - "Number of packets dropped by the queue due to overrun"; - } - } - - grouping qos-interface-queue-top { - description - "Top-level grouping for the queue associated with the - interface"; - - container queues { - description - "Surrounding container for a list of queues that are - instantiated on an interface."; - - list queue { - key "name"; - - description - "Top-level container for the queue associated with this - interface"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the name of the queue - instantiated on the interface."; - } - - container config { - description - "Configuration data for the queue associated with the - interface"; - - uses qos-interface-queue-config; - } - - container state { - config false; - description - "Operational state data for the queue associated with the - interface"; - - uses qos-interface-queue-config; - uses qos-interface-queue-state; - } - } - } - } - - grouping qos-interface-voqs-top { - description - "Structural grouping of virtual-output-queue operational state - for an interface."; - - container virtual-output-queues { - description - "Surrounding container for the list of egress interfaces - for which virtual output queues are instantiated on this - interface."; - - list voq-interface { - key "name"; - - description - "List of egress interfaces for which a virtual output - queue is instantiated at this interface."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Name used to refer to the egress interface."; - } - - container config { - description - "Configuration parameters relating to the interface - for which the VOQs are instantiated."; - uses qos-voqs-config; - } - - container state { - config false; - description - "Operational state parameters relating to the interface - for which the VOQs are instantiated."; - uses qos-voqs-config; - } - - uses qos-interface-queue-top; - } - } - } - - grouping qos-voqs-config { - description - "Configuration parameters relating to an egress interface for which - VOQs are established on an interface."; - - leaf name { - type string; - description - "Name used to refer to the egress interface."; - } - } - - grouping qos-interface-scheduler-policy-config { - description - "Configuration data for schedulers associated with - the interface"; - - leaf name { - type leafref { - // current loc: - // /qos/interfaces/interface/input/schedulers/scheduler/config/name - path "../../../../../../scheduler-policies/scheduler-policy/" + - "config/name"; - } - description - "The scheduler policy to be applied to traffic on this interface."; - } - } - - grouping qos-interface-scheduler-state { - description - "Operational state data for a scheduler within - a scheduler group applied to an interface."; - - leaf sequence { - type leafref { - // current loc: /qos/interfaces/interface/input/scheduler-policy/ - // schedulers/scheduler/state/sequence - path "../../../../../../../../scheduler-policies/" + - "scheduler-policy[name=current()/../../../../config/name]" + - "/schedulers/scheduler/config/sequence"; - } - description - "Reference to the sequence ID of the scheduler within - the current scheduler policy."; - } - - uses qos-scheduler-common-state; - } - - grouping qos-scheduler-common-state { - description - "Common definitions of counters used in schedulers."; - - leaf conforming-pkts { - type oc-yang:counter64; - description - "The number of packets that were considered conforming by - the scheduler."; - } - - leaf conforming-octets { - type oc-yang:counter64; - description - "The number of octets in packets that were considered - conforming by the scheduler."; - } - - leaf exceeding-pkts { - type oc-yang:counter64; - description - "The number of packets that were considered exceeding by - the scheduler."; - } - - leaf exceeding-octets { - type oc-yang:counter64; - description - "The number of octets in packets that were considered - exceeding by the scheduler."; - } - - leaf violating-pkts { - type oc-yang:counter64; - description - "The number of packets that were considered violating by - the policer."; - } - - leaf violating-octets { - type oc-yang:counter64; - description - "The number of octets in packets that were considered - violating by the policer."; - } - } - - grouping qos-interface-scheduler-top { - description - "Top-level grouping "; - - container scheduler-policy { - description - "Scheduler policy associated with the interface."; - - container config { - description - "Configuration parameters relating to a scheduler policy on - an interface."; - uses qos-interface-scheduler-policy-config; - } - - container state { - config false; - description - "Operational state parameters relating to a scheduler policy - on an interface."; - uses qos-interface-scheduler-policy-config; - } - - container schedulers { - config false; - description - "Schedulers within the applied scheduler-policy."; - - list scheduler { - key "sequence"; - description - "List of the schedulers that are part of the scheduler-policy - specified."; - - leaf sequence { - type leafref { - path "../state/sequence"; - } - description - "Reference to the sequence ID for the scheduler."; - } - - container state { - description - "Operational state parameters relating to the scheduler - policy."; - - uses qos-interface-scheduler-state; - } - } - } - } - } - - grouping qos-interfaces-config { - description - "Configuration data for interfaces referenced in the QoS - model"; - - leaf interface-id { - type string; - description - "Identifier for the interface."; - } - } - - grouping qos-interfaces-state { - description - "Operational state data for interfaces referenced in the QoS - model"; - - // definitions per-interface counters for QoS - } - - grouping qos-interface-input-config { - description - "Configuration data for QoS on ingress interface"; - } - - grouping qos-interface-input-state { - description - "Operational state data for QoS on ingress interface"; - } - - grouping qos-interface-input-top { - description - "Top-level grouping for QoS on ingress interface"; - - container input { - description - "Top-level container for QoS data for the ingress - interface"; - - container config { - description - "Configuration data for QoS on ingress interface"; - - uses qos-interface-input-config; - } - - container state { - config false; - description - "Operational state data for QoS on ingress interface"; - - uses qos-interface-input-config; - uses qos-interface-input-state; - } - - uses qos-interface-classifier-top; - uses qos-interface-queue-top; - uses qos-interface-scheduler-top; - uses qos-interface-voqs-top; - } - } - - grouping qos-interface-output-config { - description - "Configuration data for QoS on the egress interface"; - } - - grouping qos-interface-output-state { - description - "Operational state data for QoS on the egress interface"; - } - - grouping qos-interface-output-top { - description - "Top-level grouping for QoS on the egress interface"; - - container output { - description - "Top-level container for QoS data related to the egress - interface"; - - container config { - description - "Configuration data for QoS on the egress interface"; - - uses qos-interface-output-config; - } - - container state { - config false; - description - "Operational state data for QoS on the egress interface"; - - uses qos-interface-output-config; - uses qos-interface-output-state; - } - - uses oc-if:interface-ref; - uses qos-interface-classifier-top; - uses qos-interface-queue-top; - uses qos-interface-scheduler-top; - } - } - - grouping qos-interfaces-top { - description - "Top-level grouping for interfaces referenced in the QoS - model"; - - container interfaces { - description - "Enclosing container for the list of interface references"; - - list interface { - key "interface-id"; - description - "List of interfaces referenced by QoS entities."; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "Reference to the interface-id list key"; - } - - container config { - description - "Configuration data "; - - uses qos-interfaces-config; - } - - container state { - config false; - description - "Operational state data "; - - uses qos-interfaces-config; - uses qos-interfaces-state; - } - - uses oc-if:interface-ref; - uses qos-interface-input-top; - uses qos-interface-output-top; - - } - } - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-qos-types.yang b/src/plugins/yang/openconfig/openconfig-qos-types.yang deleted file mode 100644 index 291c557..0000000 --- a/src/plugins/yang/openconfig/openconfig-qos-types.yang +++ /dev/null @@ -1,148 +0,0 @@ -module openconfig-qos-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/qos-types"; - - prefix "oc-qos-types"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines types and identities used in OpenConfig - models related to quality-of-service (QoS)"; - - oc-ext:openconfig-version "0.2.0"; - - revision "2016-12-16" { - description - "Fix incorrect interface-ref placement"; - reference "0.2.0"; - } - - revision "2016-08-08" { - description - "Initial revision"; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - identity QOS_QUEUE_TYPE { - description - "Base identity for supported queue types, primarily - defined by their drop behavior / strategy"; - } - - identity DROP_TAIL { - base QOS_QUEUE_TYPE; - description - "When the queue is filled to capacity, newly arriving packets - are discarded until there is room in the queue to accept new - traffic. Packets are not differentiated, i.e., all packets - are treated identically."; - } - - identity RED { - base QOS_QUEUE_TYPE; - description - "Queue management based on Random Early Detection (RED). RED - drops packets based on a drop probability that is based on the - average queue length, and settings of mininum and maximum - queue thresholds. On ECN-capable devices, packets may be - marked instead of dropped to signal congestion to the - sender."; - reference - "IETF RFC 2309 - Recommendations on Queue Management and - Congestion Avoidance in the Internet - IETF RFC 7567 - IETF Recommendations Regarding Active Queue - Management"; - } - - identity WRED { - base QOS_QUEUE_TYPE; - description - "Queue management based on a variant of RED in which the packet - drop probability is based on its traffic class."; - } - - identity QOS_SCHEDULER_TYPE { - description - "Base identity to describe supported QoS scheduler types."; - } - - identity ONE_RATE_TWO_COLOR { - base QOS_SCHEDULER_TYPE; - description - "Token bucket scheduler with a single rate (committed information - rate) and two colors (conforming and exceeding). The scheduler - behavior is governed by two parameters, the CIR which - determines the rate of token fill (bps) and the committed - burst size (depth of the token bucket in bytes)."; - } - - identity TWO_RATE_THREE_COLOR { - base QOS_SCHEDULER_TYPE; - description - "Token bucket scheduler with two buckets, one filled at the - committed information rate (CIR) in bps, and the second filled - at the peak information rate (PIR) in bps when the first - bucket is full. The first bucket depth is - the committed burst size (bytes), and the second is the - excess burst size (bytes). Traffic is categorized in three - colors as follows: traffic that falls within the - the CIR is conforming, traffic that is greater than the CIR - but less than the PIR is exceeding, and traffic that is - greater than PIR is violating."; - } - - // typedef statements - - typedef queue-behavior { - type enumeration { - enum SHAPE { - description - "Packets that exceed the CIR should be queued into a - buffer. The depth of the buffer is specified to be - max-queue-depth-bytes or max-queue-depth-packets. - Packets are subsequently scheduled from this queue - to the specified output. Only packets that overflow - the buffer have the exceed action applied to them."; - } - enum POLICE { - description - "Packets that exceed the CIR should be immediately - treated as exceeding the defined rate of the scheduler - and have the exceed action applied to them."; - } - } - description - "Type definition for different queueing behaviours that - are available to a scheduler."; - } - - // grouping statements - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-qos.yang b/src/plugins/yang/openconfig/openconfig-qos.yang deleted file mode 100644 index 7bda3ae..0000000 --- a/src/plugins/yang/openconfig/openconfig-qos.yang +++ /dev/null @@ -1,90 +0,0 @@ -module openconfig-qos { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/qos"; - - prefix "oc-qos"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - // include submodules - include openconfig-qos-interfaces; - include openconfig-qos-elements; - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - related to network quality-of-service."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2016-12-16" { - description - "Fix incorrect interface-ref placement"; - reference "0.2.0"; - } - - // grouping statements - grouping qos-config { - description - "Configuration data for global QoS"; - } - - grouping qos-state { - description - "Operational state data for global QoS"; - } - - grouping qos-top { - description - "Top-level grouping for QoS model"; - - container qos { - description - "Top-level container for QoS data"; - - container config { - description - "Configuration data for global QoS"; - - uses qos-config; - } - - container state { - config false; - description - "Operational state data for global QoS"; - - uses qos-config; - uses qos-state; - } - - uses qos-interfaces-top; - uses qos-classifier-top; - uses qos-forwarding-group-top; - uses qos-queue-top; - uses qos-scheduler-top; - } - } - - // data definition statements - - uses qos-top; - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-relay-agent.yang b/src/plugins/yang/openconfig/openconfig-relay-agent.yang deleted file mode 100644 index c0a2637..0000000 --- a/src/plugins/yang/openconfig/openconfig-relay-agent.yang +++ /dev/null @@ -1,815 +0,0 @@ -module openconfig-relay-agent { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/relay-agent"; - - prefix "oc-relay"; - - // import some basic types - import ietf-inet-types { prefix inet; } - import ietf-yang-types { prefix yang; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module describes a model for configuration and operational - state related to relay agents typically used for DHCP and BOOTP - packets. The supports both DHCP and DHCPv6 and device-wide and - per-interface settings."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2016-05-16" { - description - "Initial public release"; - reference "0.1.0"; - } - - - // grouping statements - - grouping agent-information-ipv4-common-config { - description - "Common configuration data for DHCP relay option"; - - leaf enable { - type boolean; - default false; - description - "Enable sending the DHCP option for Relay Agent information - -- option 82."; - reference - "RFC 3046 - DHCP Relay Agent Information Option"; - } - } - - grouping agent-information-ipv4-common-state { - description - "Common operational state data for DHCP relay option"; - - } - - grouping agent-information-ipv4-global-top { - description - "Top-level grouping for agent information data at global level"; - - container agent-information-option { - description - "Top-level container for relay agent information option - data"; - - container config { - description - "Configuration data for the relay agent information - option"; - - uses agent-information-ipv4-common-config; - } - - container state { - - config false; - - description - "Operational state data for agent information at global - level"; - - uses agent-information-ipv4-common-config; - uses agent-information-ipv4-common-state; - } - } - } - - grouping agent-information-ipv4-interface-config { - description - "Configuration data for DCHP relay option on interfaces"; - - leaf circuit-id { - type string; - description - "Encodes an agent-local identifier of the circuit from which - a DHCP client-to-server packet was received. It is intended - for use by agents in relaying DHCP responses back to the - proper circuit. The circuit id is an opaque value"; - reference - "RFC 3046 - DHCP Relay Agent Information Option"; - } - - leaf remote-id { - type string; - description - "Provides a mechanism to identify the remote host end of - the circuit. The remote-id should be thought of as an - opaque value, but must be globally unique."; - reference - "RFC 3046 - DHCP Relay Agent Information Option"; - } - } - - grouping agent-information-ipv4-interface-state { - description - "Operational state data for DHCP relay option on interfaces"; - - leaf sent-circuit-id { - type string; - description - "Reports the circuit-id sent by the system to the DHCP - server."; - } - - leaf sent-remote-id { - type string; - description - "Reports the remote-id value sent by the system to the DHCP - server"; - } - } - - grouping agent-information-ipv4-interface-top { - description - "Top-level grouping for relay agent information option data"; - - container agent-information-option { - description - "Top-level container for relay agent information option - data"; - - container config { - description - "Configuration data for the relay agent information - option"; - - uses agent-information-ipv4-common-config; - uses agent-information-ipv4-interface-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses agent-information-ipv4-common-config; - uses agent-information-ipv4-interface-config; - uses agent-information-ipv4-common-state; - uses agent-information-ipv4-interface-state; - } - } - } - - grouping agent-options-ipv6-common-config { - description - "Configuration data for DHCPv6 options"; - - leaf enable-interface-id { - type boolean; - default false; - description - "Enables DHCPv6 OPTION_INTERFACE_ID (18) to identify the - interface on which the client message was received."; - reference - "IETF RFC 3315 - Dynamic Host Configuration Protocol for - IPv6 (DHCPv6)"; - } - - leaf enable-remote-id { - type boolean; - default false; - description - "Sets DHCPv6 OPTION_REMOTE_ID (37). This option is the - DHCPv6 equivalent for the IPv4 (DHCPv4) Relay Agent Option's - Remote-ID suboption as specified in RFC 3046. The remote-id - field may be used to encode a user name, remote IP address, - interface/port identifier, etc."; - reference - "IETF RFC 4649 - Dynamic Host Configuration Protocol for - IPv6 (DHCPv6) Relay Agent Remote-ID Option"; - } - } - - grouping agent-options-ipv6-common-state { - description - "Operational state data for DHCPv6 options"; - } - - grouping agent-options-ipv6-interface-config { - description - "Configuration data for DHCPv6 options"; - - leaf interface-id { - type string; - description - "Sets DHCPv6 OPTION_INTERFACE_ID (18) to identify the - interface on which the client message was received."; - reference - "IETF RFC 3315 - Dynamic Host Configuration Protocol for - IPv6 (DHCPv6)"; - } - - leaf remote-id { - type string; - description - "Sets DHCPv6 OPTION_REMOTE_ID (37). This option is the - DHCPv6 equivalent for the IPv4 (DHCPv4) Relay Agent Option's - Remote-ID suboption as specified in RFC 3046. The remote-id - field may be used to encode a user name, remote IP address, - interface/port identifier, etc."; - reference - "IETF RFC 4649 - Dynamic Host Configuration Protocol for - IPv6 (DHCPv6) Relay Agent Remote-ID Option"; - } - } - - grouping agent-options-ipv6-interface-state { - description - "Operational state data for DHCPv6 options"; - - leaf sent-interface-id { - type string; - description - "Reflects the DHCPv6 OPTION_INTERFACE_ID (18) sent to the - server by the system."; - reference - "IETF RFC 3315 - Dynamic Host Configuration Protocol for - IPv6 (DHCPv6)"; - } - - leaf sent-remote-id { - type string; - description - "Reflects the DHCPv6 OPTION_REMOTE_ID (37) sent to the - server by the system."; - reference - "IETF RFC 4649 - Dynamic Host Configuration Protocol for - IPv6 (DHCPv6) Relay Agent Remote-ID Option"; - } - } - - grouping agent-options-ipv6-global-top { - description - "Top-level grouping for DHCPv6 options on interfaces"; - - container options { - description - "Top-level container for DHCPv6 agent options on interfaces"; - - container config { - description - "Configuration data "; - - uses agent-options-ipv6-common-config; - } - - container state { - - config false; - - description - "Operational state data for DHCPv6 agent option on an - interface"; - - uses agent-options-ipv6-common-config; - uses agent-options-ipv6-common-state; - } - } - } - - grouping agent-options-ipv6-interface-top { - description - "Top-level grouping for DHCPv6 options on interfaces"; - - container options { - description - "Top-level container for DHCPv6 agent options on interfaces"; - - container config { - description - "Configuration data "; - - uses agent-options-ipv6-common-config; - uses agent-options-ipv6-interface-config; - } - - container state { - - config false; - - description - "Operational state data for DHCPv6 agent option on an - interface"; - - uses agent-options-ipv6-common-config; - uses agent-options-ipv6-interface-config; - uses agent-options-ipv6-common-state; - uses agent-options-ipv6-interface-state; - } - } - } - - grouping relay-agent-common-config { - description - "Configuration data for global level relay agent options, - common across address families"; - - leaf enable-relay-agent { - type boolean; - default false; - description - "Enables DHCP/BOOTP relay agent on all interfaces"; - } - } - - grouping relay-agent-common-state { - description - "Operational state data for global level relay agent, common - across address families"; - } - - grouping relay-agent-ipv4-config { - description - "Configuration data for DHCPv4 relay agents"; - - uses relay-agent-common-config; - } - - grouping relay-agent-ipv4-state { - description - "Configuration data for DHCPv4 relay agents"; - - uses relay-agent-common-state; - } - - - grouping relay-agent-ipv4-top { - description - "Top-level grouping for global relay agent data"; - - container dhcp { - description - "Top-level container for global relay agent data"; - - container config { - description - "Configuration data for global DHCPv4"; - - uses relay-agent-ipv4-config; - } - - container state { - - config false; - - description - "Operational state data global DHCPv4"; - - uses relay-agent-ipv4-config; - uses relay-agent-ipv4-state; - } - - uses agent-information-ipv4-global-top; - uses relay-agent-ipv4-interfaces-top; - } - } - - grouping relay-agent-ipv6-config { - description - "Configuration data for DHCPv6 relay agents"; - - uses relay-agent-common-config; - } - - grouping relay-agent-ipv6-state { - description - "Configuration data for DHCPv6 relay agents"; - - uses relay-agent-common-state; - } - - grouping relay-agent-ipv6-top { - description - "Top-level grouping for global relay agent data"; - - container dhcpv6 { - description - "Top-level container for global relay agent data"; - - container config { - description - "Configuration data for global DHCPv6"; - - uses relay-agent-ipv6-config; - } - - container state { - - config false; - - description - "Operational state data global DHCPv6"; - - uses relay-agent-ipv6-config; - uses relay-agent-ipv6-state; - } - - uses agent-options-ipv6-global-top; - uses relay-agent-ipv6-interfaces-top; - } - } - - - grouping relay-agent-common-stats { - description - "Common DHCP / BOOTP message statistics for - DHCPv4 and DHCPv6"; - - - leaf total-dropped { - type yang:counter64; - description - "Total number of DHCP packets dropped by the relay agent"; - } - - leaf invalid-opcode { - type yang:counter64; - description - "Number of DHCP packets dropped due to an invalid opcode"; - } - - leaf invalid-options { - type yang:counter64; - description - "Number of DHCP packets dropped due to an invalid option"; - } - } - - grouping relay-agent-ipv4-stats { - description - "DHCPv4 relay agent message statistics"; - - leaf bootrequest-received { - type yang:counter64; - description - "BOOTREQUEST messages received by the relay agent"; - } - - leaf dhcp-decline-received { - type yang:counter64; - description - "DHCP DECLINE messages received by the relay agent"; - } - - leaf dhcp-discover-received { - type yang:counter64; - description - "DHCP DISCOVER messages received by the relay agent"; - } - - leaf dhcp-inform-received { - type yang:counter64; - description - "DHCP INFORM messages received by the relay agent"; - } - - leaf dhcp-release-received { - type yang:counter64; - description - "DHCP RELEASE messages received by the relay agent"; - } - - leaf dhcp-request-received { - type yang:counter64; - description - "DHCP REQUEST messages received by the relay agent"; - } - - leaf bootrequest-sent { - type yang:counter64; - description - "BOOTREQUEST messages forwarded by the relay agent"; - } - - leaf bootreply-sent { - type yang:counter64; - description - "BOOTREPLY messages forwarded by the relay agent"; - } - - leaf dhcp-offer-sent { - type yang:counter64; - description - "DHCP OFFER messages sent by the relay agent"; - } - - leaf dhcp-ack-sent { - type yang:counter64; - description - "DHCP ACK messages sent by the relay agent"; - } - - leaf dhcp-nack-sent { - type yang:counter64; - description - "DHCP NACK messages sent by the relay agent"; - } - } - - grouping relay-agent-ipv6-stats { - description - "DHCPv4 relay agent message statistics"; - - leaf dhcpv6-solicit-received { - type yang:counter64; - description - "Number of DHCPv6 SOLICIT messages received from clients - by the relay agent"; - } - - leaf dhcpv6-decline-received { - type yang:counter64; - description - "Number of DHCPv6 DECLINE messages received from - clients by the relay agent"; - } - - leaf dhcpv6-request-received { - type yang:counter64; - description - "Number of DHCPv6 request messages received from clients - by the relay agent"; - } - - leaf dhcpv6-release-received { - type yang:counter64; - description - "Number of DHCPv6 release messages received from clients - by the relay agent"; - } - - leaf dhcpv6-confirm-received { - type yang:counter64; - description - "Number of DHCPv6 confirm messages received from clients - by the relay agent"; - } - - leaf dhcpv6-rebind-received { - type yang:counter64; - description - "Number of DHCPv6 rebind messages received from clients - by the relay agent"; - } - - leaf dhcpv6-info-request-received { - type yang:counter64; - description - "Number of DHCPv6 information requests messages received from - clients by the relay agent"; - } - - leaf dhcpv6-relay-reply-received { - type yang:counter64; - description - "Number of DHCPv6 relay reply messages received from servers - by the relay agent"; - } - - leaf dhcpv6-adverstise-sent { - type yang:counter64; - description - "Number of DHCPv6 adverstise messages sent to clients by - the relay agent"; - } - - leaf dhcpv6-reply-sent { - type yang:counter64; - description - "Number of DHCPv6 reply messages sent to clients by - the relay agent"; - } - - leaf dhcpv6-reconfigure-sent { - type yang:counter64; - description - "Number of DHCPv6 reconfigure messages sent to clients by - the relay agent"; - } - - leaf dhcpv6-relay-forw-sent { - type yang:counter64; - description - "Number of DHCPv6 relay-forward messages sent to servers - by the relay agent"; - } - - } - - grouping relay-agent-ipv4-interfaces-config { - description - "Configuration data for interfaces enabled for relaying"; - - leaf id { - type oc-if:interface-id; - description - "Name of the interface on which relay agent is active"; - } - - leaf enable { - type boolean; - description - "Enables the relay agent on the referenced interface. - At least one helper address should also be configured - for forwarding requested."; - } - - leaf-list helper-address { - type inet:ip-address; - description - "List of IPv4 or IPv6 addresses of DHCP servers to which the - relay agent should forward DHCPv4 requests. The relay agent is - expected to forward DHCPv4/BOOTP requests to all listed - server addresses when DHCPv4 relaying is enabled globally, or - on the interface."; - } - } - - grouping relay-agent-ipv4-interfaces-state { - description - "Operational state data for interfaces enabled for relaying"; - - container counters { - description - "Counters and statistics for relay agent operation."; - - uses relay-agent-common-stats; - uses relay-agent-ipv4-stats; - } - } - - grouping relay-agent-ipv4-interfaces-top { - description - "Top-level grouping for DHCPv4 relays on interfaces"; - - container interfaces { - description - "Enclosing container for the list of interface references."; - - list interface { - key "id"; - description - "List of interfaces on which the relay agent is - configured."; - - leaf id { - type leafref { - path "../config/id"; - } - description - "Reference to the interface list key"; - } - - container config { - description - "Configuration data for relay agent interfaces."; - - uses relay-agent-ipv4-interfaces-config; - } - - container state { - - config false; - - description - "Operational state data for relay agent interfaces."; - - uses relay-agent-ipv4-interfaces-config; - uses relay-agent-ipv4-interfaces-state; - } - - uses oc-if:interface-ref; - uses agent-information-ipv4-interface-top; - } - } - } - - grouping relay-agent-ipv6-interfaces-config { - description - "Configuration data for interfaces enabled for relaying"; - - leaf id { - type oc-if:interface-id; - description - "Name of the interface on which relay agent is active"; - } - - leaf enable { - type boolean; - description - "Enables the relay agent on the referenced interface. - At least one helper address should also be configured - for forwarding requested."; - } - - leaf-list helper-address { - type inet:ipv6-address; - description - "List of IPv6 addresses of DHCP servers to which the - relay agent should forward DHCPv6 requests. The relay agent - is expected to forward DHCPv4/BOOTP requests to all listed - server addresses when DHCPv6 relaying is enabled globally, or - on the interface."; - } - } - - grouping relay-agent-ipv6-interfaces-state { - description - "Operational state data for interfaces enabled for relaying"; - - container counters { - description - "Counters and statistics for relay agent operation."; - - uses relay-agent-common-stats; - uses relay-agent-ipv6-stats; - } - } - - grouping relay-agent-ipv6-interfaces-top { - description - "Top-level grouping for DHCPv4 relays on interfaces"; - - container interfaces { - description - "Enclosing container for the list of interface references."; - - list interface { - key "id"; - description - "List of interfaces on which the relay agent is - configured."; - - leaf id { - type leafref { - path "../config/id"; - } - description - "Reference to the interface list key"; - } - - container config { - description - "Configuration data for relay agent interfaces."; - - uses relay-agent-ipv6-interfaces-config; - } - - container state { - - config false; - - description - "Operational state data for relay agent interfaces."; - - uses relay-agent-ipv6-interfaces-config; - uses relay-agent-ipv6-interfaces-state; - } - - uses oc-if:interface-ref; - uses agent-options-ipv6-interface-top; - } - } - } - - grouping relay-agent-top { - description - "Top-level container for relay agent configuration and opstate - data."; - - container relay-agent { - description - "Top level container for relay-agent configuration and - operational state data"; - - uses relay-agent-ipv4-top; - uses relay-agent-ipv6-top; - } - } - - // data definition statements - - uses relay-agent-top; - - // augment statements - - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-rib-bgp-attributes.yang b/src/plugins/yang/openconfig/openconfig-rib-bgp-attributes.yang deleted file mode 100644 index 0f0512c..0000000 --- a/src/plugins/yang/openconfig/openconfig-rib-bgp-attributes.yang +++ /dev/null @@ -1,907 +0,0 @@ -submodule openconfig-rib-bgp-attributes { - - belongs-to openconfig-rib-bgp { - prefix "oc-rib-bgp"; - } - - - // import some basic types - import openconfig-bgp-types { prefix oc-bgpt; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-rib-bgp-types { prefix oc-bgprt; } - import openconfig-segment-routing { prefix oc-sr; } - import openconfig-inet-types { prefix oc-inet; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule contains common data definitions for BGP - attributes for use in BGP RIB tables."; - - - oc-ext:openconfig-version "0.3.0"; - - revision "2016-10-17" { - description - "OpenConfig BGP RIB refactor"; - reference "0.3.0"; - } - - - grouping bgp-as-path-attr-state { - description - "Data for representing BGP AS-PATH attribute"; - - leaf type { - type oc-bgpt:as-path-segment-type; - description - "The type of AS-PATH segment"; - } - - leaf-list member { - type oc-inet:as-number; - description - "List of the AS numbers in the AS-PATH segment"; - } - } - - grouping bgp-as-path-attr-top { - description - "Top-level grouping for AS-PATH attribute data"; - - container as-path { - description - "Enclosing container for the list of AS path segments. - - In the Adj-RIB-In or Adj-RIB-Out, this list should show - the received or sent AS_PATH, respectively. For - example, if the local router is not 4-byte capable, this - value should consist of 2-octet ASNs or the AS_TRANS - (AS 23456) values received or sent in route updates. - - In the Loc-RIB, this list should reflect the effective - AS path for the route, e.g., a 4-octet value if the - local router is 4-octet capable."; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4) - RFC 6793 - BGP Support for Four-octet AS Number Space - RFC 5065 - Autonomous System Confederations for BGP"; - - list segment { - description - "Unkeyed list of AS PATH segments"; - - container state { - config false; - description - "Opstate data for AS-PATH segments"; - - uses bgp-as-path-attr-state; - } - } - } - } - - grouping bgp-as4-path-attr-top { - description - "Top-level grouping for AS4-PATH attribute data"; - - container as4-path { - description - "This is the path encoded with 4-octet - AS numbers in the optional transitive AS4_PATH attribute. - This value is populated with the received or sent attribute - in Adj-RIB-In or Adj-RIB-Out, respectively. It should not - be populated in Loc-RIB since the Loc-RIB is expected to - store the effective AS-Path in the as-path leaf regardless - of being 4-octet or 2-octet."; - reference - "RFC 6793 - BGP Support for Four-octet AS Number Space"; - - list segment { - description - "Unkeyed list of AS PATH segments"; - - container state { - config false; - description - "Opstate data for AS-PATH segments"; - - uses bgp-as-path-attr-state; - } - } - } - } - - grouping bgp-community-attr-state { - description - "Common definition of BGP community attributes"; - - leaf-list community { - type union { - type oc-bgpt:bgp-well-known-community-type; - type oc-bgpt:bgp-std-community-type; - } - description - "List of standard or well-known BGP community - attributes."; - } - } - - grouping bgp-extended-community-attr-state { - description - "Common definition of BGP extended community attribute"; - - leaf-list ext-community { - type oc-bgpt:bgp-ext-community-recv-type; - description - "List of BGP extended community attributes. The received - extended community may be an explicitly modeled - type or unknown, represented by an 8-octet value - formatted according to RFC 4360."; - reference - "RFC 4360 - BGP Extended Communities Attribute"; - } - - } - - grouping bgp-aggregator-attr-state { - description - "Operational state data for the BGP aggregator - attribute"; - - leaf as { - type oc-inet:as-number; - description - "AS number of the autnonomous system that performed the - aggregation."; - } - - leaf as4 { - type oc-inet:as-number; - description - "AS number of the autnonomous system that performed the - aggregation (4-octet representation). This value is - populated if an upstream router is not 4-octet capable. - Its semantics are similar to the AS4_PATH optional - transitive attribute"; - reference - "RFC 6793 - BGP Support for Four-octet AS Number Space"; - } - - leaf address { - type oc-inet:ipv4-address; - description - "IP address of the router that performed the - aggregation."; - } - } - - - grouping bgp-aggregator-attr-top { - description - "Common definition of the BGP aggregator attribute"; - - container aggregator { - description - "BGP attribute indicating the prefix has been aggregated by - the specified AS and router."; - - container state { - config false; - description - "Operational state data for BGP aggregator attribute"; - - uses bgp-aggregator-attr-state; - } - } - } - - grouping bgp-shared-common-attr-state { - description - "Route attributes shared across route table entries, - common to both LOC-Rib and Adj-RIB"; - - - leaf origin { - type oc-bgpt:bgp-origin-attr-type; - description - "BGP attribute defining the origin of the path information."; - } - - leaf atomic-aggregate { - type boolean; - description - "BGP attribute indicating that the prefix is an atomic - aggregate, i.e., the peer selected a less specific - route without selecting a more specific route that is - included in it."; - } - - leaf next-hop { - type oc-inet:ip-address; - description - "BGP next hop attribute defining the IP address of the router - that should be used as the next hop to the destination"; - } - - leaf med { - type uint32; - description - "BGP multi-exit discriminator attribute used in BGP route - selection process"; - } - - leaf local-pref { - type uint32; - description - "BGP local preference attribute sent to internal peers to - indicate the degree of preference for externally learned - routes. The route with the highest local preference value - is preferred."; - } - - leaf originator-id { - type oc-inet:ipv4-address; - description - "BGP attribute that provides the id as an IPv4 address - of the originator of the announcement."; - reference - "RFC 4456 - BGP Route Reflection: An Alternative to Full - Mesh Internal BGP (IBGP)"; - } - - leaf-list cluster-list { - type oc-inet:ipv4-address; - description - "Represents the reflection path that the route has passed."; - reference - "RFC 4456 - BGP Route Reflection: An Alternative to Full - Mesh Internal BGP (IBGP)"; - } - - leaf aigp { - type uint64; - description - "BGP path attribute representing the accumulated IGP metric - for the path"; - reference - "RFC 7311 - The Accumulated IGP Metric Attribute for BGP"; - } - } - - grouping bgp-unknown-attr-flags-state { - description - "Operational state data for path attribute flags"; - - leaf optional { - type boolean; - description - "Defines whether the attribute is optional (if - set to true) or well-known (if set to false). - Set in the high-order bit of the BGP attribute - flags octet."; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - - leaf transitive { - type boolean; - description - "Defines whether an optional attribute is transitive - (if set to true) or non-transitive (if set to false). For - well-known attributes, the transitive flag MUST be set to - true. Set in the second high-order bit of the BGP attribute - flags octet."; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - - leaf partial { - type boolean; - description - "Defines whether the information contained in the optional - transitive attribute is partial (if set to true) or complete - (if set to false). For well-known attributes and for - optional non-transitive attributes, the partial flag - must be set to false. Set in the third high-order bit of - the BGP attribute flags octet."; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - - leaf extended { - type boolean; - description - "Defines whether the attribute length is one octet - (if set to false) or two octets (if set to true). Set in - the fourth high-order bit of the BGP attribute flags - octet."; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - } - - grouping bgp-unknown-attr-state { - description - "Operational state data for path attributes not shared - across route entries, common to LOC-RIB and Adj-RIB"; - - leaf attr-type { - type uint8; - description - "1-octet value encoding the attribute type code"; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - - leaf attr-len { - type uint16; - description - "One or two octet attribute length field indicating the - length of the attribute data in octets. If the Extended - Length attribute flag is set, the length field is 2 octets, - otherwise it is 1 octet"; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - - leaf attr-value { - type binary { - length 1..65535; - } - description - "Raw attribute value, not including the attribute - flags, type, or length. The maximum length - of the attribute value data is 2^16-1 per the max value - of the attr-len field (2 octets)."; - reference - "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; - } - } - - grouping bgp-unknown-attr-top { - description - "Unknown path attributes that are not expected to be shared - across route entries, common to LOC-RIB and Adj-RIB"; - - container unknown-attributes { - description - "Unknown path attributes that were received in the UPDATE - message which contained the prefix."; - - list unknown-attribute { - key "attr-type"; - description - "This list contains received attributes that are unrecognized - or unsupported by the local router. The list may be empty."; - - leaf attr-type { - type leafref { - path "../state/attr-type"; - } - description - "Reference to the list key"; - } - - container state { - description - "Operational state for unknown route attributes"; - - uses bgp-unknown-attr-flags-state; - uses bgp-unknown-attr-state; - } - } - } - } - - grouping bgp-loc-rib-attr-state { - description - "Path attributes that are not expected to be shared across - route entries, specific to LOC-RIB"; - - } - - grouping bgp-adj-rib-attr-state { - description - "Path attributes that are not expected to be shared across - route entries, specific to Adj-RIB"; - - leaf path-id { - type uint32; - description - "When the BGP speaker supports advertisement of multiple - paths for a prefix, the path identifier is used to - uniquely identify a route based on the combination of the - prefix and path id. In the Adj-RIB-In, the path-id value is - the value received in the update message. In the Loc-RIB, - if used, it should represent a locally generated path-id - value for the corresponding route. In Adj-RIB-Out, it - should be the value sent to a neighbor when add-paths is - used, i.e., the capability has been negotiated."; - reference - "draft-ietf-idr-add-paths - Advertisement of Multiple Paths - in BGP"; - } - } - - grouping bgp-tunnel-encapsulation-attr-top { - description - "Top-level definition of the BGP Tunnel encapsulation - attribute."; - - container tunnel-encapsulation { - config false; - description - "The Tunnel Encapsulation attribute specifies a set of - tunnels to a remote destination. The attribute is TLV - based and allows description of a tunnel type, and the - relevant information to create the tunnel to the remote - destination."; - - reference "RFC5512, draft-ietf-idr-tunnel-encaps"; - - container tunnels { - description - "Surrounding container for the set of tunnels included - within the tunnel encapsulation attribute."; - - list tunnel { - key "type"; - description - "List of the tunnels that are specified within the - attribute. Keyed on the type of tunnel that the - TLV describes."; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to the tunnel type specified within the - TLV's type field."; - } - - container state { - config false; - description - "State parameters of the tunnel attribute"; - - uses bgp-tunnel-encapsulation-attr-tunnel-state; - } - - container subtlvs { - description - "Surrounding container for the list of sub-TLVs within - the tunnel encapsulation attribute."; - - list subtlv { - key "type"; - description - "List of the subTLVs that are specified within the - TLV instance inside the tunnel encapsulation attribute."; - - leaf type { - type leafref { - path "../state/type"; - } - description - "Reference to the sub-TLV type that is included within - the subTLV."; - } - - container state { - config false; - description - "State parameters of the subTLV of the tunnel attribute"; - - uses bgp-tunnel-encapsulation-attr-tunnel-subtlv-state; - } - - container remote-endpoints { - when "../state/type = 'oc-bgprt:TUNNEL_REMOTE_ENDPOINT'" { - description - "Only allow the remote endpoint to be specified when the - subTLV is specified to describe remote endpoints."; - } - - description - "The remote endpoints associated with the tunnel - described by the attribute."; - - list remote-endpoint { - key "endpoint"; - description - "List of the remote endpoints described within the TLV."; - - leaf endpoint { - type leafref { - path "../state/endpoint"; - } - description - "Reference to the IP address of the endpoint."; - } - - container state { - config false; - description - "State parameters of the remote endpoints described - by the attribute."; - - uses bgp-tunnel-encapsulation-attr-tunnel-subtlv-endpoint-state; - } - } - } - - container segment-lists { - when "../state/type = 'oc-bgprt:SRTE_SEGMENT_LIST'" { - description - "Only allow the segment lists to be specified when the sub-TLV - is of the relevant type."; - } - - description - "Surrounding container for the list of segment lists that are - associated with a SR-TE Policy tunnel."; - - list segment-list { - key "instance-id"; - - description - "List of segment lists that are specified within the - tunnel encapsulation attribute."; - - leaf instance-id { - type leafref { - path "../state/instance-id"; - } - description - "Reference to the instance identifier of the Segment List - that is included within the tunnel encapsulation - attribute."; - } - - container state { - config false; - description - "State parameters relating to the Segment List within the - Tunnel Encapsulation attribute."; - - uses bgp-tunnel-encapsulation-attr-tunnel-subtlv-segment-list-state; - } - - container segments { - description - "Surrounding container for the list of segments within the - SR-TE segment list."; - - list segment { - key "index"; - - description - "List of segments within the SR-TE segment list."; - - leaf index { - type leafref { - path "../state/index"; - } - description - "Reference to the index of the segment within the - segment list."; - } - - container state { - config false; - description - "State parameters relating to the segment within - the segment list."; - - uses bgp-tunnel-encapsulation-attr-tunnel-subtlv-segment-state; - } - } - } - } - } - } - } - } - } - } - } - - grouping bgp-tunnel-encapsulation-attr-tunnel-state { - description - "State parameters of the tunnel encapsulation attribute"; - - leaf type { - type identityref { - base "oc-bgprt:TUNNEL_ENCAPSULATION_TYPE"; - } - description - "Type of the tunnel described within the tunnel encapsulation - attribute."; - } - } - - grouping bgp-tunnel-encapsulation-attr-tunnel-subtlv-state { - description - "State parameters relating to subTLVs of the tunnel encapsulation - attribute."; - - leaf type { - type identityref { - base "oc-bgprt:TUNNEL_ENCAPSULATION_SUBTLV_TYPE"; - } - description - "Type of the sub-TLV within the tunnel encapsulation attribute"; - } - - leaf-list colors { - when "../type = 'oc-bgprt:TUNNEL_COLOR'" { - description - "Only allow list of colours to be specified when the sub-TLV - specifies colours associated with the tunnel encapsulation - attribute."; - } - type uint32; - description - "The colours associated with the tunnel encapsulation attribute, - as described by RFC5512."; - } - - leaf preference { - when "../type = 'oc-bgprt:SRTE_PREFERENCE'" { - description - "Only allow the preference to be specified when the sub-TLV - specifies the preference associated with the tunnel encapsulation - attribute."; - } - type uint32; - default 100; - description - "The preference of the SR-TE policy described by the tunnel - encapsulation attribute. If unspecified, the preference - defaults to 100."; - } - - leaf binding-sid { - when "../type = 'oc-bgprt:SRTE_BINDING_SID'" { - description - "Only allow the binding SID to be specified when the sub-TLV - is specified to be the of the relevant type."; - } - type oc-sr:sr-sid-type; - description - "Binding SID associated with the SR-TE policy"; - } - } - - grouping bgp-tunnel-encapsulation-attr-tunnel-subtlv-endpoint-state { - description - "State parameters relating to the remote endpoint described by a - tunnel encapsulation attribute."; - - leaf as { - type oc-inet:as-number; - description - "The remote AS to which the IP address of the remote endpoint - belongs."; - } - - leaf endpoint { - type oc-inet:ip-address; - description - "IP address of the remote endpoint."; - } - } - - grouping bgp-tunnel-encapsulation-attr-tunnel-subtlv-segment-list-state { - description - "State parameters relating to an entry within a segment list within - a SR-TE policy segment list."; - - leaf instance-id { - type uint64; - description - "Instance of the segment list within the sub-TLV"; - } - - leaf weight { - type uint32; - description - "The weight given to the path within the set of segment - lists that are included in the tunnel attribute sub-TLV."; - } - } - - grouping bgp-tunnel-encapsulation-attr-tunnel-subtlv-segment-state { - description - "State parameters relating to a segment within the segment list."; - - leaf index { - type uint64; - description - "Index of the segment within the segment list. The segments are - ordered in ascending order, beginning at 0."; - } - - leaf type { - type enumeration { - enum MPLS_SID { - description - "The segment is specified as an MPLS label."; - value 1; - } - enum IPV6_SID { - description - "The segment is specified as an IPv6 address."; - value 2; - } - enum IPV4_NODE_ADDRESS { - description - "The segment is specified as an IPv4 node address with - optional SID."; - value 3; - } - enum IPV6_NODE_ADDRESS { - description - "The segment is specified as an IPv6 node address with - optional SID."; - value 4; - } - enum IPV4_LOCAL_INTF_ID { - description - "The segment is specified as an IPv4 address with a - local interface identifier along with an ."; - value 5; - } - enum IPV4_LOCAL_REMOTE_ADDR { - description - "The segment is specified as an IPv4 local and remote - address with an optional SID."; - value 6; - } - enum IPV6_LOCAL_INTF_ID { - description - "The segment is specified as an IPv6 address with an - index, along with an optional SID."; - value 7; - } - enum IPV6_LOCAL_REMOTE_ADDR { - description - "The segmetn is specified as an IPv6 local and remote - address with an optional SID."; - value 8; - } - } - description - "The type of segment specified within the segment entry."; - } - - leaf sid { - type oc-sr:sr-sid-type; - description - "SID value for the segment entry, specified as an MPLS label - or IPv6 address."; - } - - leaf mpls-tc { - when "../type = 'MPLS_SID'" { - description - "The MPLS TC bits can only be specified when the segment - time is an MPLS label."; - } - type uint8 { - range "0..7"; - } - description - "The MPLS TC bits used when the SID is specified as an MPLS - label. If set to zero, the receiving system specifies the - value of the TC bits."; - } - - leaf mpls-bos { - when "../type = 'MPLS_SID'" { - description - "The MPLS BoS bit can only be specified when the segment - type is an MPLS label."; - } - type boolean; - description - "When this leaf is set to true the MPLS bottom-of-stack - (BoS) bit is set in the MPLS segment. The BoS bit should - always be set to zero by the sender."; - } - - leaf mpls-ttl { - when "../type = 'MPLS_SID'" { - description - "The MPLS TTL can only be set when the segment type is - an MPLS label."; - } - type uint8; - description - "The MPLS time to live (TTL) to be set for the MPLS - segment. If set to 255, the receiver specifies the - TTL value that is used for packets sent with this - segment in the stack."; - } - - leaf remote-ipv4-address { - when "../type = 'IPV4_NODE_ADDRESS' or ../type='../IPV4_ADDRESS_INDEX'" + - "or ../type='IPV4_LOCAL_INTF_ID' or " + - "../type='IPV4_LOCAL_REMOTE_ADDR'" { - description - "An IPv4 address can only be associated with the segment entry - when the type of the SID is a node address, or an IPv6 address - with an index."; - } - type oc-inet:ipv4-address; - description - "An IPv4 address specified as the remote node address. When the type - of the segment specifies only the remote address, no other addresses - are specified. When the type of the segment requires a local address, - this leaf specifies the remote IPv4 address."; - } - - leaf local-ipv4-address { - when "../type = 'IPV4_LOCAL_REMOTE_ADDR'" { - description - "A local IPv4 address can only be specified when the segment is - specified by the local and remote IPv4 interface addresses."; - } - type oc-inet:ipv4-address; - description - "An IPv4 address of a local adjacency that is used to identify - the segment."; - } - - leaf remote-ipv6-address { - when "../type = 'IPV6_NODE_ADDRESS' or ../type='IPV6_ADDRESS_INDEX'" + - "or ../type='IPV6_LOCAL_INTF_ID' or " + - "../type='IPV6_LOCAL_REMOTE_ADDR'" { - description - "An IPv6 address can only be specified with a segment entry - when the type of the SID is a node address, or an IPv6 address - with an index."; - } - type oc-inet:ipv6-address; - description - "An IPv6 address specified as the remote node address. When the type - of the segment specifies only the remote address, no other addresses - are specified. When the type of the segment requires a local address, - this leaf specifies the remote IPv6 address."; - } - - leaf local-ipv6-address { - when "../type = 'IPV6_LOCAL_REMOTE_ADDR'" { - description - "A local IPv6 address can only be speciifed when the segment - is specified by the local and remote IPv6 interface addresses."; - } - type oc-inet:ipv6-address; - description - "An IPv6 address of a local adjacency that is used to identify the - segment."; - } - - leaf local-interface-id { - when "../type = 'IPV4_LOCAL_INTF_ID' or ../type='IPV6_LOCAL_INTF_ID'" { - description - "A local interface identifier can only be specified when the - type of the segment is an IPv4 address with local interface ID, - or IPv6 address with local interface ID."; - } - type uint32; - description - "The local interface identifier to be utilised for the segment."; - reference - "draft-ietf-pce-segment-routing"; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-rib-bgp-ext.yang b/src/plugins/yang/openconfig/openconfig-rib-bgp-ext.yang deleted file mode 100644 index 3c7cf35..0000000 --- a/src/plugins/yang/openconfig/openconfig-rib-bgp-ext.yang +++ /dev/null @@ -1,166 +0,0 @@ -module openconfig-rib-bgp-ext { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/rib/bgp-ext"; - - prefix "oc-bgprib-ext"; - - import openconfig-rib-bgp { prefix oc-bgprib; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-rib-bgp-types { prefix oc-bgpribt; } - - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Defines additional data nodes for the OpenConfig BGP RIB model. - These items reflect extensions that are desirable features but - are not currently supported in a majority of BGP - implementations."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2016-10-17" { - description - "OpenConfig BGP RIB refactor"; - reference "0.3.0"; - } - - revision "2016-04-11" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - - grouping rib-ext-route-annotations { - description - "Extended annotations for routes in the routing tables"; - - leaf reject-reason { - type union { - type identityref { - base oc-bgpribt:BGP_NOT_SELECTED_BESTPATH; - } - type identityref { - base oc-bgpribt:BGP_NOT_SELECTED_POLICY; - } - } - description - "Indicates the reason the route is not used, either due to - policy filtering or bestpath selection"; - } - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/oc-bgprib:loc-rib/" + - "oc-bgprib:routes/oc-bgprib:route/oc-bgprib:state" { - description - "Add extended annotations to the Loc-RIB for IPv4"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/oc-bgprib:loc-rib/" + - "oc-bgprib:routes/oc-bgprib:route/oc-bgprib:state" { - description - "Add extended annotations to the Loc-RIB for IPv6"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/" + - "oc-bgprib:neighbors/oc-bgprib:neighbor/" + - "oc-bgprib:adj-rib-in-pre/oc-bgprib:routes/oc-bgprib:route" + - "/oc-bgprib:state" { - description - "Add extended annotations to Adj-RIB for IPv4"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/" + - "oc-bgprib:neighbors/oc-bgprib:neighbor/" + - "oc-bgprib:adj-rib-in-post/oc-bgprib:routes/oc-bgprib:route" + - "/oc-bgprib:state"{ - description - "Add extended annotations to Adj-RIB for IPv4"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/" + - "oc-bgprib:neighbors/oc-bgprib:neighbor/" + - "oc-bgprib:adj-rib-out-pre/oc-bgprib:routes/oc-bgprib:route" + - "/oc-bgprib:state"{ - description - "Add extended annotations to Adj-RIB for IPv4"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv4-unicast/" + - "oc-bgprib:neighbors/oc-bgprib:neighbor/" + - "oc-bgprib:adj-rib-out-post/oc-bgprib:routes/oc-bgprib:route" + - "/oc-bgprib:state"{ - description - "Add extended annotations to Adj-RIB for IPv4"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/" + - "oc-bgprib:neighbors/oc-bgprib:neighbor/" + - "oc-bgprib:adj-rib-in-pre/oc-bgprib:routes/oc-bgprib:route" + - "/oc-bgprib:state"{ - description - "Add extended annotations to Adj-RIB for IPv6"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/" + - "oc-bgprib:neighbors/oc-bgprib:neighbor/" + - "oc-bgprib:adj-rib-in-post/oc-bgprib:routes/oc-bgprib:route" + - "/oc-bgprib:state"{ - description - "Add extended annotations to Adj-RIB for IPv6"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/" + - "oc-bgprib:neighbors/oc-bgprib:neighbor/" + - "oc-bgprib:adj-rib-out-pre/oc-bgprib:routes/oc-bgprib:route" + - "/oc-bgprib:state"{ - description - "Add extended annotations to Adj-RIB for IPv6"; - - uses rib-ext-route-annotations; - } - - augment "/oc-bgprib:bgp-rib/oc-bgprib:afi-safis/" + - "oc-bgprib:afi-safi/oc-bgprib:ipv6-unicast/" + - "oc-bgprib:neighbors/oc-bgprib:neighbor/" + - "oc-bgprib:adj-rib-out-post/oc-bgprib:routes/oc-bgprib:route" + - "/oc-bgprib:state"{ - description - "Add extended annotations to Adj-RIB for IPv6"; - - uses rib-ext-route-annotations; - } - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-rib-bgp-shared-attributes.yang b/src/plugins/yang/openconfig/openconfig-rib-bgp-shared-attributes.yang deleted file mode 100644 index 77a79b6..0000000 --- a/src/plugins/yang/openconfig/openconfig-rib-bgp-shared-attributes.yang +++ /dev/null @@ -1,171 +0,0 @@ -submodule openconfig-rib-bgp-shared-attributes { - - belongs-to openconfig-rib-bgp { - prefix "oc-rib-bgp"; - } - - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - include openconfig-rib-bgp-attributes; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule contains structural data definitions for - attribute sets shared across routes."; - - - oc-ext:openconfig-version "0.3.0"; - - revision "2016-10-17" { - description - "OpenConfig BGP RIB refactor"; - reference "0.3.0"; - } - - - grouping attribute-sets-top { - description - "Top level grouping for list of common attribute sets"; - - container attr-sets { - description - "Enclosing container for the list of path attribute sets"; - - list attr-set { - key "index"; - - description - "List of path attributes that may be in use by multiple - routes in the table"; - - leaf index { - type leafref { - path "../state/index"; - } - description - "Reference to list key"; - } - - container state { - config false; - description - "Operational state for common path attributes"; - - leaf index { - type uint64; - description - "System generated index for each attribute set. The - index is used to reference an attribute set from a - specific path. Multiple paths may reference the same - attribute set."; - } - - uses bgp-shared-common-attr-state; - } - uses bgp-aggregator-attr-top; - uses bgp-as-path-attr-top; - uses bgp-as4-path-attr-top; - uses bgp-tunnel-encapsulation-attr-top; - } - } - } - - grouping community-sets-top { - description - "Top level grouping for list of shared community attribute - sets"; - - container communities { - description - "Enclosing container for the list of community attribute - sets"; - - list community { - key "index"; - - description - "List of path attributes that may be in use by multiple - routes in the table"; - - leaf index { - type leafref { - path "../state/index"; - } - description - "Reference to the list key"; - } - - container state { - config false; - description - "Operational state for shared BGP community attribute"; - - leaf index { - type uint64; - description - "System generated index for each attribute set. The - index is used to reference an attribute set from a - specific path. Multiple paths may reference the same - attribute set."; - } - - uses bgp-community-attr-state; - } - } - } - } - - grouping ext-community-sets-top { - description - "Top level grouping for list of extended community attribute - sets"; - - container ext-communities { - description - "Enclosing container for the list of extended community - attribute sets"; - - list ext-community { - key "index"; - - description - "List of path attributes that may be in use by multiple - routes in the table"; - - leaf index { - type leafref { - path "../state/index"; - } - description - "Reference to the list key"; - } - - container state { - config false; - description - "Operational state for shared BGP extended community - attribute"; - - leaf index { - type uint64; - description - "System generated index for each attribute set. The - index is used to reference an attribute set from a - specific path. Multiple paths may reference the same - attribute set."; - } - - uses bgp-extended-community-attr-state; - } - } - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-rib-bgp-table-attributes.yang b/src/plugins/yang/openconfig/openconfig-rib-bgp-table-attributes.yang deleted file mode 100644 index 285f0a9..0000000 --- a/src/plugins/yang/openconfig/openconfig-rib-bgp-table-attributes.yang +++ /dev/null @@ -1,113 +0,0 @@ -submodule openconfig-rib-bgp-table-attributes { - - belongs-to openconfig-rib-bgp { - prefix "oc-rib-bgp"; - } - - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } - import openconfig-rib-bgp-types { prefix oc-bgpribt; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule contains common data definitions for data - related to a RIB entry, or RIB table."; - - - oc-ext:openconfig-version "0.3.0"; - - revision "2016-10-17" { - description - "OpenConfig BGP RIB refactor"; - reference "0.3.0"; - } - - - - grouping bgp-common-route-annotations-state { - description - "Data definitions for flags and other information attached - to routes in both LOC-RIB and Adj-RIB"; - - leaf last-modified { - type oc-types:timeticks64; - description - "Timestamp when this path was last modified. - - The value is the timestamp in seconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - } - - leaf valid-route { - type boolean; - description - "Indicates that the route is considered valid by the - local router"; - } - - leaf invalid-reason { - type identityref { - base oc-bgpribt:INVALID_ROUTE_REASON; - } - description - "If the route is rejected as invalid, this indicates the - reason."; - } - - } - - grouping bgp-loc-rib-route-annotations-state { - description - "Data definitions for information attached to routes in the - LOC-RIB"; - - // placeholder for route metadata specific to the LOC-RIB - - } - - grouping bgp-adj-rib-in-post-route-annotations-state { - description - "Data definitions for information attached to routes in the - Adj-RIB-in post-policy table"; - - leaf best-path { - type boolean; - description - "Current path was selected as the best path."; - } - } - - grouping bgp-common-table-attrs-state { - description - "Common attributes attached to all routing tables"; - - // placeholder for metadata associated with all tables - } - - grouping bgp-common-table-attrs-top { - description - "Operational state data for common attributes attached to - all routing tables"; - // no enclosing container as this data will fit under an - // existing LOC-RIB container - - container state { - config false; - description - "Operational state data for data related to the entire - LOC-RIB"; - - uses bgp-common-table-attrs-state; - } - } - - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-rib-bgp-tables.yang b/src/plugins/yang/openconfig/openconfig-rib-bgp-tables.yang deleted file mode 100644 index f7a759d..0000000 --- a/src/plugins/yang/openconfig/openconfig-rib-bgp-tables.yang +++ /dev/null @@ -1,883 +0,0 @@ -submodule openconfig-rib-bgp-tables { - - belongs-to openconfig-rib-bgp { - prefix "oc-rib-bgp"; - } - - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-policy-types { prefix oc-pol-types; } - - include openconfig-rib-bgp-attributes; - include openconfig-rib-bgp-shared-attributes; - include openconfig-rib-bgp-table-attributes; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This submodule contains structural data definitions for - BGP routing tables."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2016-10-17" { - description - "OpenConfig BGP RIB refactor"; - reference "0.3.0"; - } - - - grouping bgp-adj-rib-common-attr-refs { - description - "Definitions of common references to attribute sets for - multiple AFI-SAFIs for Adj-RIB tables"; - - leaf attr-index { - type leafref { - path "../../../../../../../../../../attr-sets/attr-set/" + - "state/index"; - } - description - "Reference to the common attribute group for the - route"; - } - - leaf community-index { - type leafref { - path "../../../../../../../../../../communities/community/" + - "state/index"; - } - description - "Reference to the community attribute for the route"; - } - - leaf ext-community-index { - type leafref { - path "../../../../../../../../../../ext-communities/" + - "ext-community/state/index"; - } - description - "Reference to the extended community attribute for the - route"; - } - } - - grouping bgp-loc-rib-common-attr-refs { - description - "Definitions of common references to attribute sets for - multiple AFI-SAFIs for LOC-RIB tables"; - - leaf attr-index { - type leafref { - path "../../../../../../../../attr-sets/attr-set/" + - "state/index"; - } - description - "Reference to the common attribute group for the - route"; - } - - leaf community-index { - type leafref { - path "../../../../../../../../communities/community/" + - "state/index"; - } - description - "Reference to the community attribute for the route"; - } - - leaf ext-community-index { - type leafref { - path "../../../../../../../../ext-communities/" + - "ext-community/state/index"; - } - description - "Reference to the extended community attribute for the - route"; - } - } - - grouping bgp-loc-rib-common-keys { - description - "Common references used in keys for IPv4 and IPv6 - LOC-RIB entries"; - - leaf origin { - type union { - type oc-inet:ip-address; - type identityref { - base oc-pol-types:INSTALL_PROTOCOL_TYPE; - } - } - description - "Indicates the origin of the route. If the route is learned - from a neighbor, this value is the neighbor address. If - the route was injected or redistributed from another - protocol, the origin indicates the source protocol for the - route."; - } - - leaf path-id { - type uint32; - default 0; - description - "If the route is learned from a neighbor, the path-id - corresponds to the path-id for the route in the - corresponding adj-rib-in-post table. If the route is - injected from another protocol, or the neighbor does not - support BGP add-paths, the path-id should be set - to zero, also the default value."; - } - } - - grouping bgp-loc-rib-key-refs { - description - "Key references to support operational state structure for - the BGP LOC-RIB table"; - - leaf prefix { - type leafref { - path "../state/prefix"; - } - description - "Reference to the prefix list key"; - } - - leaf origin { - type leafref { - path "../state/origin"; - } - description - "Reference to the origin list key"; - } - - leaf path-id { - type leafref { - path "../state/path-id"; - } - description - "Reference to the path-id list key"; - } - } - - grouping ipv4-loc-rib-top { - description - "Top-level grouping for IPv4 routing tables"; - - container loc-rib { - config false; - description - "Container for the IPv4 BGP LOC-RIB data"; - - uses bgp-common-table-attrs-top; - - container routes { - description - "Enclosing container for list of routes in the routing - table."; - - list route { - key "prefix origin path-id"; - - description - "List of routes in the table, keyed by the route - prefix, the route origin, and path-id. The route - origin can be either the neighbor address from which - the route was learned, or the source protocol that - injected the route. The path-id distinguishes routes - for the same prefix received from a neighbor (e.g., - if add-paths is eanbled)."; - - uses bgp-loc-rib-key-refs; - - container state { - description - "Operational state data for route entries in the - BGP LOC-RIB"; - - leaf prefix { - type oc-inet:ipv4-prefix; - description - "The IPv4 prefix corresponding to the route"; - } - - uses bgp-loc-rib-common-keys; - uses bgp-loc-rib-common-attr-refs; - uses bgp-loc-rib-attr-state; - uses bgp-common-route-annotations-state; - uses bgp-loc-rib-route-annotations-state; - - } - - uses bgp-unknown-attr-top; - - } - } - } - } - - grouping ipv6-loc-rib-top { - description - "Top-level grouping for IPv6 routing tables"; - - container loc-rib { - config false; - description - "Container for the IPv6 BGP LOC-RIB data"; - - uses bgp-common-table-attrs-top; - - container routes { - description - "Enclosing container for list of routes in the routing - table."; - - list route { - key "prefix origin path-id"; - - description - "List of routes in the table, keyed by the route - prefix, the route origin, and path-id. The route - origin can be either the neighbor address from which - the route was learned, or the source protocol that - injected the route. The path-id distinguishes routes - for the same prefix received from a neighbor (e.g., - if add-paths is eanbled)."; - - uses bgp-loc-rib-key-refs; - - container state { - description - "Operational state data for route entries in the - BGP LOC-RIB"; - - leaf prefix { - type oc-inet:ipv6-prefix; - description - "The IPv6 prefix corresponding to the route"; - } - - uses bgp-loc-rib-common-keys; - uses bgp-loc-rib-common-attr-refs; - uses bgp-loc-rib-attr-state; - uses bgp-common-route-annotations-state; - uses bgp-loc-rib-route-annotations-state; - - } - - uses bgp-unknown-attr-top; - } - } - } - } - - grouping bgp-adj-rib-key-refs { - description - "Key references to support operational state structure for - the BGP Adj-RIB tables"; - - leaf prefix { - type leafref { - path "../state/prefix"; - } - description - "Reference to the prefix list key"; - } - - leaf path-id { - type leafref { - path "../state/path-id"; - } - description - "Reference to the path-id list key"; - } - } - - grouping ipv4-adj-rib-common { - description - "Common structural grouping for each IPv4 adj-RIB table"; - - uses bgp-common-table-attrs-top; - - container routes { - config false; - description - "Enclosing container for list of routes in the routing - table."; - - list route { - key "prefix path-id"; - - description - "List of routes in the table, keyed by a combination of - the route prefix and path-id to distinguish multiple - routes received from a neighbor for the same prefix, - e.g., when BGP add-paths is enabled."; - - uses bgp-adj-rib-key-refs; - - container state { - description - "Operational state data for BGP Adj-RIB entries"; - - leaf prefix { - type oc-inet:ipv4-prefix; - description - "Prefix for the route"; - } - - uses bgp-adj-rib-attr-state; - uses bgp-adj-rib-common-attr-refs; - uses bgp-common-route-annotations-state; - } - - uses bgp-unknown-attr-top; - - } - } - } - - grouping ipv4-adj-rib-in-post { - description - "Common structural grouping for the IPv4 adj-rib-in - post-policy table"; - - uses bgp-common-table-attrs-top; - - container routes { - config false; - description - "Enclosing container for list of routes in the routing - table."; - - list route { - key "prefix path-id"; - - description - "List of routes in the table, keyed by a combination of - the route prefix and path-id to distinguish multiple - routes received from a neighbor for the same prefix, - e.g., when BGP add-paths is enabled."; - - uses bgp-adj-rib-key-refs; - - container state { - description - "Operational state data for BGP Adj-RIB entries"; - - leaf prefix { - type oc-inet:ipv4-prefix; - description - "Prefix for the route"; - } - - uses bgp-adj-rib-attr-state; - uses bgp-adj-rib-common-attr-refs; - uses bgp-common-route-annotations-state; - uses bgp-adj-rib-in-post-route-annotations-state; - } - - uses bgp-unknown-attr-top; - } - } - } - - - grouping ipv4-adj-rib-top { - description - "Top-level grouping for Adj-RIB table"; - - container neighbors { - config false; - description - "Enclosing container for neighbor list"; - - list neighbor { - key "neighbor-address"; - description - "List of neighbors (peers) of the local BGP speaker"; - - leaf neighbor-address { - type leafref { - path "../state/neighbor-address"; - } - description - "Reference to the list key"; - } - - container state { - description - "Operational state for each neighbor BGP Adj-RIB"; - - leaf neighbor-address { - type oc-inet:ip-address; - description - "IP address of the BGP neighbor or peer"; - } - } - - container adj-rib-in-pre { - description - "Per-neighbor table containing the NLRI updates - received from the neighbor before any local input - policy rules or filters have been applied. This can - be considered the 'raw' updates from the neighbor."; - - uses ipv4-adj-rib-common; - - } - - container adj-rib-in-post { - description - "Per-neighbor table containing the paths received from - the neighbor that are eligible for best-path selection - after local input policy rules have been applied."; - - uses ipv4-adj-rib-in-post; - } - - container adj-rib-out-pre { - description - "Per-neighbor table containing paths eligble for - sending (advertising) to the neighbor before output - policy rules have been applied"; - - uses ipv4-adj-rib-common; - - } - - container adj-rib-out-post { - description - "Per-neighbor table containing paths eligble for - sending (advertising) to the neighbor after output - policy rules have been applied"; - - uses ipv4-adj-rib-common; - - } - } - } - } - - grouping ipv6-adj-rib-common { - description - "Common structural grouping for each IPv6 adj-RIB table"; - - uses bgp-common-table-attrs-state; - - container routes { - config false; - description - "Enclosing container for list of routes in the routing - table."; - - list route { - key "prefix path-id"; - - description - "List of routes in the table"; - - uses bgp-adj-rib-key-refs; - - container state { - description - "Operational state data for BGP Adj-RIB entries"; - - leaf prefix { - type oc-inet:ipv6-prefix; - description - "Prefix for the route"; - } - - uses bgp-adj-rib-attr-state; - uses bgp-adj-rib-common-attr-refs; - uses bgp-common-route-annotations-state; - } - - uses bgp-unknown-attr-top; - } - } - } - - grouping ipv6-adj-rib-in-post { - description - "Common structural grouping for the IPv6 adj-rib-in - post-policy table"; - - uses bgp-common-table-attrs-state; - - container routes { - config false; - description - "Enclosing container for list of routes in the routing - table."; - - list route { - key "prefix path-id"; - - description - "List of routes in the table"; - - uses bgp-adj-rib-key-refs; - - container state { - description - "Operational state data for BGP Adj-RIB entries"; - - leaf prefix { - type oc-inet:ipv6-prefix; - description - "Prefix for the route"; - } - - uses bgp-adj-rib-attr-state; - uses bgp-adj-rib-common-attr-refs; - uses bgp-common-route-annotations-state; - uses bgp-adj-rib-in-post-route-annotations-state; - } - - uses bgp-unknown-attr-top; - } - } - } - - grouping ipv6-adj-rib-top { - description - "Top-level grouping for Adj-RIB table"; - - container neighbors { - config false; - description - "Enclosing container for neighbor list"; - - list neighbor { - key "neighbor-address"; - description - "List of neighbors (peers) of the local BGP speaker"; - - leaf neighbor-address { - type leafref { - path "../state/neighbor-address"; - } - description - "Reference to the list key"; - } - - container state { - description - "Operational state for each neighbor BGP Adj-RIB"; - - leaf neighbor-address { - type oc-inet:ip-address; - description - "IP address of the BGP neighbor or peer"; - } - } - - container adj-rib-in-pre { - description - "Per-neighbor table containing the NLRI updates - received from the neighbor before any local input - policy rules or filters have been applied. This can - be considered the 'raw' updates from the neighbor."; - - uses ipv6-adj-rib-common; - - } - - container adj-rib-in-post { - description - "Per-neighbor table containing the paths received from - the neighbor that are eligible for best-path selection - after local input policy rules have been applied."; - - uses ipv6-adj-rib-in-post; - } - - container adj-rib-out-pre { - description - "Per-neighbor table containing paths eligble for - sending (advertising) to the neighbor before output - policy rules have been applied"; - - uses ipv6-adj-rib-common; - - } - - container adj-rib-out-post { - description - "Per-neighbor table containing paths eligble for - sending (advertising) to the neighbor after output - policy rules have been applied"; - - uses ipv6-adj-rib-common; - - } - } - } - } - - grouping ipvX-srte-policy-adjrib-top { - description - "Top-level grouping for the IPv4 and IPv6 AFI, SR-TE Policy SAFI - Adj-RIBs."; - - container neighbors { - description - "Surrounding container for the list of neighbours that are - enabled for the IPv4 and IPv6 AFI, SR-TE Policy SAFI address - family."; - - list neighbor { - key "neighbor-address"; - - description - "An individual neighbour that is enabled for the SR-TE - Policy SAFI."; - - leaf neighbor-address { - type leafref { - path "../state/neighbor-address"; - } - description - "Reference to the address of the neighbour for which the - Adj-RIBs specified are maintained."; - } - - container state { - description - "Operational state parameters of the BGP neighbour for - which the SR-TE Policy SAFI is enabled."; - uses ipvX-srte-policy-adjrib-neighbor-state; - } - - container adj-rib-in-pre { - description - "The Adj-RIB-In for the SR-TE Policy SAFI for the neighbour, - prior to any inbound policy constraints or modifications - having been applied."; - uses ipvX-srte-policy-adjrib-common; - } - - container adj-rib-in-post { - description - "The Adj-RIB-In for the SR-TE Policy SAFI for the neighbour, - following any inbound policy constraints or modifications - being made."; - uses ipvX-srte-policy-adjrib-in-post; - } - - container adj-rib-out-pre { - description - "The Adj-RIB-Out for the SR-TE Policy SAFI for the neighbour, - prior to any outgoing policy modifications or constraints - having been applied."; - uses ipvX-srte-policy-adjrib-common; - } - - container adj-rib-out-post { - description - "The Adj-RIB-Out for the SR-TE Policy SAFI for the neighbour, - follow any outbound policy constraints or modifications being - made."; - uses ipvX-srte-policy-adjrib-common; - } - } - } - } - - grouping ipvX-srte-policy-adjrib-neighbor-state { - description - "Common attributes for each neighbour for which the SR-TE - Policy SAFI RIBs are being maintained."; - - leaf neighbor-address { - description - "The address of the neighbour for which the SR-TE policy - SAFI has been negotiated."; - type oc-inet:ip-address; - } - } - - grouping ipvX-srte-policy-adjrib-common { - description - "Common structure containing the routes that are learnt via - the IPv4 or IPv6 SR-TE Policy SAFI."; - - container routes { - description - "Surrounding container for the list of routes within the - SR-TE Policy SAFI."; - - list route { - key "path-id endpoint color"; - - description - "The routes within the SR-TE Policy SAFI Adj-RIB. The - routes are keyed on the path-id - set to a non-zero - value only if ADD-PATHS is being used; the color; and - the endpoint. The colour and endpoint are extracted from - the NLRI."; - - uses ipvX-srte-policy-common-keys; - - container state { - description - "State parameters for entries within the Adj-RIB used - to store SR-TE Policy SAFI routes."; - - uses ipvX-srte-policy-common-route-state; - uses bgp-adj-rib-common-attr-refs; - uses bgp-common-route-annotations-state; - } - - uses bgp-unknown-attr-top; - } - } - } - - grouping ipvX-srte-policy-common-route-state { - description - "Common attributes used SR-TE Policy SAFI routes."; - - leaf path-id { - type uint32; - default 0; - description - "Identifier for the path when using BGP ADD-PATHS for the SR-TE - policy SAFI."; - } - - leaf endpoint { - type oc-inet:ip-address; - description - "A unique identifier for the remote set of nodes. When the address - family is IPv4, the value is a 4-octet IPv4 address. When the - address family is IPv6, the value is a 16-octet IPv6 address."; - } - - leaf color { - type uint32; - description - "A 4-octet value identifying the policy. Combined with the endpoint - the endpoint and colour represent the unique policy."; - } - } - - grouping ipvX-srte-policy-common-keys { - description - "Common grouping of the keys used for lists of SR-TE policy - SAFI routes."; - - leaf path-id { - type leafref { - path "../state/path-id"; - } - description - "Reference to the path identifier for the SR-TE Policy SAFI - route. The value is only non-zero if ADD-PATHS is not being - used."; - } - - leaf endpoint { - type leafref { - path "../state/endpoint"; - } - description - "Reference to the endpoint used for the SR-TE Policy SAFI - route within the NLRI."; - } - - leaf color { - type leafref { - path "../state/color"; - } - description - "Reference to the colour used for the SR-TE policy SAFI - route within the NLRI."; - } - } - - grouping ipvX-srte-policy-adjrib-in-post { - description - "Grouping for the post-policy Adj-RIB-In for SR-TE Policy SAFI routes"; - - container routes { - description - "The set of routes that are within the Adj-RIB-Out for the - neighbour."; - - list route { - key "path-id endpoint color"; - - description - "The routes that are in the Adj-RIB-In-Post for the specified - BGP neighbour within the SR-TE Policy SAFI for the specified - address family."; - - uses ipvX-srte-policy-common-keys; - - container state { - description - "Operational state attributes related to the route within - the SR-TE Policy SAFI Adj-RIB-In-Post for the specified - neighbour."; - - uses ipvX-srte-policy-common-route-state; - uses bgp-adj-rib-common-attr-refs; - uses bgp-common-route-annotations-state; - uses bgp-adj-rib-in-post-route-annotations-state; - } - - uses bgp-unknown-attr-top; - } - } - } - - grouping ipvX-srte-policy-locrib-top { - description - "Top-level grouping for the Loc-RIB for IPv4 or IPv6 Adj-RIB - for SR-TE Policy SAFI."; - - container loc-rib { - description - "The Loc-RIB for the SR-TE Policy SAFI for IPv4 or IPv6 Unicast - AFIs."; - - container routes { - description - "List of routes within the SR-TE Policy SAFI, for the IPv4 or - IPv6 AFI."; - - list route { - key "path-id endpoint color"; - - description - "Route within the specified address family for the SR-TE - Policy SAFI."; - - uses ipvX-srte-policy-common-keys; - - container state { - description - "Operational state attributes for each route within the - IPv4 or IPv6 Unicast SR-TE Policy SAFI."; - - uses ipvX-srte-policy-common-route-state; - uses bgp-loc-rib-common-attr-refs; - uses bgp-common-route-annotations-state; - } - - uses bgp-unknown-attr-top; - } - } - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-rib-bgp-types.yang b/src/plugins/yang/openconfig/openconfig-rib-bgp-types.yang deleted file mode 100644 index 3c0d1b0..0000000 --- a/src/plugins/yang/openconfig/openconfig-rib-bgp-types.yang +++ /dev/null @@ -1,244 +0,0 @@ -module openconfig-rib-bgp-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/rib/bgp-types"; - - prefix "oc-bgprib-types"; - - import openconfig-extensions { prefix oc-ext; } - - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Defines identity and type defintions associated with - the OpenConfig BGP RIB modules"; - - oc-ext:openconfig-version "0.3.0"; - - revision "2016-10-17" { - description - "OpenConfig BGP RIB refactor"; - reference "0.3.0"; - } - - revision "2016-04-11" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - identity INVALID_ROUTE_REASON { - description - "Base identity for reason code for routes that are rejected as - invalid. Some derived entities are based on BMP v3"; - reference "BGP Monitoring Protocol (draft-ietf-grow-bmp-07)"; - } - - identity INVALID_CLUSTER_LOOP { - base INVALID_ROUTE_REASON; - description - "Route was invalid due to CLUSTER_LIST loop"; - } - - identity INVALID_AS_LOOP { - base INVALID_ROUTE_REASON; - description - "Route was invalid due to AS_PATH loop"; - } - - identity INVALID_ORIGINATOR { - base INVALID_ROUTE_REASON; - description - "Route was invalid due to ORIGINATOR_ID, e.g., update has - local router as originator"; - } - - identity INVALID_CONFED { - base INVALID_ROUTE_REASON; - description - "Route was invalid due to a loop in the AS_CONFED_SEQUENCE or - AS_CONFED_SET attributes"; - } - - identity BGP_NOT_SELECTED_BESTPATH { - description - "Base identity for indicating reason a route was was not - selected by BGP route selection algorithm"; - reference - "RFC 4271 - Section 9.1"; - } - - identity LOCAL_PREF_LOWER { - base BGP_NOT_SELECTED_BESTPATH; - description - "Route has a lower localpref attribute than current best path"; - reference - "RFC 4271 - Section 9.1.2"; - } - - identity AS_PATH_LONGER { - base BGP_NOT_SELECTED_BESTPATH; - description - "Route has a longer AS path attribute than current best path"; - reference - "RFC 4271 - Section 9.1.2.2 (a)"; - } - - identity ORIGIN_TYPE_HIGHER { - base BGP_NOT_SELECTED_BESTPATH; - description - "Route has a higher origin type, i.e., IGP origin is preferred - over EGP or incomplete"; - reference - "RFC 4271 - Section 9.1.2.2 (b)"; - } - - identity MED_HIGHER { - base BGP_NOT_SELECTED_BESTPATH; - description - "Route has a higher MED, or metric, attribute than the current - best path"; - reference - "RFC 4271 - Section 9.1.2.2 (c)"; - } - - identity PREFER_EXTERNAL { - base BGP_NOT_SELECTED_BESTPATH; - description - "Route source is via IGP, rather than EGP."; - reference - "RFC 4271 - Section 9.1.2.2 (d)"; - } - - identity NEXTHOP_COST_HIGHER { - base BGP_NOT_SELECTED_BESTPATH; - description - "Route has a higher interior cost to the next hop."; - reference - "RFC 4271 - Section 9.1.2.2 (e)"; - } - - identity HIGHER_ROUTER_ID { - base BGP_NOT_SELECTED_BESTPATH; - description - "Route was sent by a peer with a higher BGP Identifier value, - or router id"; - reference - "RFC 4271 - Section 9.1.2.2 (f)"; - } - - identity HIGHER_PEER_ADDRESS { - base BGP_NOT_SELECTED_BESTPATH; - description - "Route was sent by a peer with a higher IP address"; - reference - "RFC 4271 - Section 9.1.2.2 (g)"; - } - - identity BGP_NOT_SELECTED_POLICY { - description - "Base identity for reason code for routes that are rejected - due to policy"; - } - - identity REJECTED_IMPORT_POLICY { - base BGP_NOT_SELECTED_POLICY; - description - "Route was rejected after apply import policies"; - } - - identity TUNNEL_ENCAPSULATION_TYPE { - description - "Types of tunnel encapsulation, as described by the Tunnel - Encapsulation attribute"; - reference - "RFC5512"; - } - - identity SRTE_POLICY_TUNNEL { - base TUNNEL_ENCAPSULATION_TYPE; - description - "Segment Routing Traffic Engineering Policy tunnel."; - reference - "draft-previdi-idr-segment-routing-te-policy"; - } - - identity TUNNEL_ENCAPSULATION_SUBTLV_TYPE { - description - "SubTLVs of the Tunnel Encapsulation attribute"; - reference - "RFC5512"; - } - - identity TUNNEL_REMOTE_ENDPOINT { - base TUNNEL_ENCAPSULATION_SUBTLV_TYPE; - description - "Remote endpoint of the tunnel."; - reference - "RFC5512"; - } - - identity TUNNEL_COLOR { - base TUNNEL_ENCAPSULATION_SUBTLV_TYPE; - description - "Colour of the tunnel"; - reference - "RFC5512"; - } - - identity SRTE_PREFERENCE { - base TUNNEL_ENCAPSULATION_SUBTLV_TYPE; - description - "Preference of the SR-TE policy entry described by - the tunnel encapsulation attribute."; - reference - "draft-previdi-idr-segment-routing-te-policy"; - } - - identity SRTE_BINDING_SID { - base TUNNEL_ENCAPSULATION_SUBTLV_TYPE; - description - "Binding SID to be used by the SR-TE policy described - by the tunnel encapsulation attribute."; - reference - "draft-previdi-idr-segment-routing-te-policy"; - } - - identity SRTE_SEGMENT_LIST { - base TUNNEL_ENCAPSULATION_SUBTLV_TYPE; - description - "Segment lists to be used by the SR-TE policy described - by the tunnel encapsulation attribute."; - reference - "draft-previdi-idr-segment-routing-te-policy"; - } - - identity SRTE_SEGMENT_LIST_SUBTLV { - description - "SubTLVs of the SR-TE Policy Segment List sub-TLV of the - Tunnel Encapsulation attribute."; - reference - "draft-previdi-idr-segment-routing-te-policy"; - } - - identity SRTE_SEGMENT_LIST_WEIGHT { - base SRTE_SEGMENT_LIST_SUBTLV; - description - "Weight of the segment list within the SR-TE policy"; - reference - "draft-previdi-idr-segment-routing-te-policy"; - } - - identity SRTE_SEGMENT_LIST_SEGMENT { - base SRTE_SEGMENT_LIST_SUBTLV; - description - "An individual element within the SR-TE Policy Segment - List."; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-rib-bgp.yang b/src/plugins/yang/openconfig/openconfig-rib-bgp.yang deleted file mode 100644 index 7fc4828..0000000 --- a/src/plugins/yang/openconfig/openconfig-rib-bgp.yang +++ /dev/null @@ -1,209 +0,0 @@ -module openconfig-rib-bgp { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/rib/bgp"; - - prefix "oc-rib-bgp"; - - // import some basic types - import openconfig-bgp-types { prefix oc-bgpt; } - import openconfig-extensions { prefix oc-ext; } - - // include RIB submodules - - // structure for LOC-RIB and Adj-RIB tables - include openconfig-rib-bgp-tables; - - // structure of shared attribute groups - include openconfig-rib-bgp-shared-attributes; - - // groupings of attributes in three categories: - // - shared across multiple routes - // - common to LOC-RIB and Adj-RIB, but not shared across routes - // - specific to LOC-RIB or Adj-RIB - include openconfig-rib-bgp-attributes; - - // groupings of annotations for each route or table - include openconfig-rib-bgp-table-attributes; - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Defines a data model for representing BGP routing table (RIB) - contents. The model supports 5 logical RIBs per address family: - - loc-rib: This is the main BGP routing table for the local routing - instance, containing best-path selections for each prefix. The - loc-rib table may contain multiple routes for a given prefix, - with an attribute to indicate which was selected as the best - path. Note that multiple paths may be used or advertised even if - only one path is marked as best, e.g., when using BGP - add-paths. An implementation may choose to mark multiple - paths in the RIB as best path by setting the flag to true for - multiple entries. - - adj-rib-in-pre: This is a per-neighbor table containing the NLRI - updates received from the neighbor before any local input policy - rules or filters have been applied. This can be considered the - 'raw' updates from a given neighbor. - - adj-rib-in-post: This is a per-neighbor table containing the - routes received from the neighbor that are eligible for - best-path selection after local input policy rules have been - applied. - - adj-rib-out-pre: This is a per-neighbor table containing routes - eligible for sending (advertising) to the neighbor before output - policy rules have been applied. - - adj-rib-out-post: This is a per-neighbor table containing routes - eligible for sending (advertising) to the neighbor after output - policy rules have been applied."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2016-10-17" { - description - "OpenConfig BGP RIB refactor"; - reference "0.3.0"; - } - - revision "2016-04-11" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - - - // grouping statements - - - - grouping bgp-rib-state { - description - "Operational state data for the top level BGP RIB"; - - leaf afi-safi-name { - type identityref { - base oc-bgpt:AFI_SAFI_TYPE; - } - description "AFI,SAFI"; - } - } - - grouping bgp-rib-top { - description - "Top-level grouping for the BGP RIB"; - - container bgp-rib { - config false; - description - "Top level container for BGP RIBs"; - - uses attribute-sets-top; - uses community-sets-top; - uses ext-community-sets-top; - - container afi-safis { - config false; - description - "Enclosing container for address family list"; - - list afi-safi { - key "afi-safi-name"; - description - "list of afi-safi types"; - - leaf afi-safi-name { - type leafref { - path "../state/afi-safi-name"; - } - description - "Reference to the list key"; - } - - container state { - config false; - description - "Operational state data for the BGP list"; - - uses bgp-rib-state; - } - - container ipv4-unicast { - when "../afi-safi-name = 'oc-bgpt:IPV4_UNICAST'" { - description - "Include this container for IPv4 unicast RIB"; - } - description - "Routing tables for IPv4 unicast -- active when the - afi-safi name is ipv4-unicast"; - - uses ipv4-loc-rib-top; - uses ipv4-adj-rib-top; - } - - container ipv6-unicast { - when "../afi-safi-name = 'oc-bgpt:IPV6_UNICAST'" { - description - "Include this container for IPv6 unicast RIB"; - } - description - "Routing tables for IPv6 unicast -- active when the - afi-safi name is ipv6-unicast"; - - uses ipv6-loc-rib-top; - uses ipv6-adj-rib-top; - } - - container ipv4-srte-policy { - when "../afi-safi-name = 'oc-bgpt:SRTE_POLICY_IPV4'" { - description - "Include this container only for the IPv4 AFI, SR-TE Policy - SAFI."; - } - description - "Routing tables for the IPv4 Unicast, SR-TE Policy SAFI."; - - uses ipvX-srte-policy-locrib-top; - uses ipvX-srte-policy-adjrib-top; - } - - container ipv6-srte-policy { - when "../afi-safi-name = 'oc-bgpt:SRTE_POLICY_IPV6'" { - description - "Include this container only for the IPv6 AFI, SR-TE Policy - SAFI."; - } - description - "Routing tables for the IPv6 Unicast, SR-TE Policy SAFI."; - - uses ipvX-srte-policy-locrib-top; - uses ipvX-srte-policy-adjrib-top; - } - } - } - } - } - - - // data definition statements - - uses bgp-rib-top; - - // augment statements - - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-routing-policy.yang b/src/plugins/yang/openconfig/openconfig-routing-policy.yang deleted file mode 100644 index ca4c7ed..0000000 --- a/src/plugins/yang/openconfig/openconfig-routing-policy.yang +++ /dev/null @@ -1,1097 +0,0 @@ -module openconfig-routing-policy { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/routing-policy"; - - prefix "oc-rpol"; - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-policy-types { prefix oc-pol-types; } - import openconfig-extensions { prefix oc-ext; } - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module describes a YANG model for routing policy - configuration. It is a limited subset of all of the policy - configuration parameters available in the variety of vendor - implementations, but supports widely used constructs for managing - how routes are imported, exported, and modified across different - routing protocols. This module is intended to be used in - conjunction with routing protocol configuration models (e.g., - BGP) defined in other modules. - - Route policy expression: - - Policies are expressed as a set of top-level policy definitions, - each of which consists of a sequence of policy statements. Policy - statements consist of simple condition-action tuples. Conditions - may include mutiple match or comparison operations, and similarly - actions may be multitude of changes to route attributes or a - final disposition of accepting or rejecting the route. - - Route policy evaluation: - - Policy definitions are referenced in routing protocol - configurations using import and export configuration statements. - The arguments are members of an ordered list of named policy - definitions which comprise a policy chain, and optionally, an - explicit default policy action (i.e., reject or accept). - - Evaluation of each policy definition proceeds by evaluating its - corresponding individual policy statements in order. When a - condition statement in a policy statement is satisfied, the - corresponding action statement is executed. If the action - statement has either accept-route or reject-route actions, policy - evaluation of the current policy definition stops, and no further - policy definitions in the chain are evaluated. - - If the condition is not satisfied, then evaluation proceeds to - the next policy statement. If none of the policy statement - conditions are satisfied, then evaluation of the current policy - definition stops, and the next policy definition in the chain is - evaluated. When the end of the policy chain is reached, the - default route disposition action is performed (i.e., reject-route - unless an an alternate default action is specified for the - chain). - - Policy 'subroutines' (or nested policies) are supported by - allowing policy statement conditions to reference another policy - definition which applies conditions and actions from the - referenced policy before returning to the calling policy - statement and resuming evaluation. If the called policy - results in an accept-route (either explicit or by default), then - the subroutine returns an effective true value to the calling - policy. Similarly, a reject-route action returns false. If the - subroutine returns true, the calling policy continues to evaluate - the remaining conditions (using a modified route if the - subroutine performed any changes to the route)."; - - oc-ext:openconfig-version "3.1.0"; - - revision "2018-06-05" { - description - "Add PIM, IGMP to INSTALL_PROTOCOL_TYPES identity"; - reference "3.1.0"; - } - - revision "2017-07-14" { - description - "Replace policy choice node/type with policy-result - enumeration;simplified defined set naming;removed generic - IGP actions; migrate to OpenConfig types; added mode for - prefix sets"; - reference "3.0.0"; - } - - revision "2016-05-12" { - description - "OpenConfig public release"; - reference "2.0.1"; - } - - - // typedef statements - - typedef default-policy-type { - // this typedef retained for name compatibiity with default - // import and export policy - type enumeration { - enum ACCEPT_ROUTE { - description - "Default policy to accept the route"; - } - enum REJECT_ROUTE { - description - "Default policy to reject the route"; - } - } - description - "Type used to specify route disposition in - a policy chain"; - } - - typedef policy-result-type { - type enumeration { - enum ACCEPT_ROUTE { - description "Policy accepts the route"; - } - enum REJECT_ROUTE { - description "Policy rejects the route"; - } - } - description - "Type used to specify route disposition in - a policy chain"; - } - - - // grouping statements - - grouping prefix-set-config { - description - "Configuration data for prefix sets used in policy - definitions."; - - leaf name { - type string; - description - "name / label of the prefix set -- this is used to - reference the set in match conditions"; - } - - leaf mode { - type enumeration { - enum IPV4 { - description - "Prefix set contains IPv4 prefixes only"; - } - enum IPV6 { - description - "Prefix set contains IPv6 prefixes only"; - } - enum MIXED { - description - "Prefix set contains mixed IPv4 and IPv6 prefixes"; - } - } - description - "Indicates the mode of the prefix set, in terms of which - address families (IPv4, IPv6, or both) are present. The - mode provides a hint, but the device must validate that all - prefixes are of the indicated type, and is expected to - reject the configuration if there is a discrepancy. The - MIXED mode may not be supported on devices that require - prefix sets to be of only one address family."; - } - - } - - grouping prefix-set-state { - description - "Operational state data for prefix sets"; - } - - grouping prefix-set-top { - description - "Top-level data definitions for a list of IPv4 or IPv6 - prefixes which are matched as part of a policy"; - - container prefix-sets { - description - "Enclosing container "; - - list prefix-set { - key "name"; - description - "List of the defined prefix sets"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to prefix name list key"; - } - - container config { - description - "Configuration data for prefix sets"; - - uses prefix-set-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses prefix-set-config; - uses prefix-set-state; - } - - uses prefix-top; - } - } - } - - grouping prefix-config { - description - "Configuration data for a prefix definition"; - - leaf ip-prefix { - type oc-inet:ip-prefix; - mandatory true; - description - "The prefix member in CIDR notation -- while the - prefix may be either IPv4 or IPv6, most - implementations require all members of the prefix set - to be the same address family. Mixing address types in - the same prefix set is likely to cause an error."; - } - - leaf masklength-range { - type string { - pattern '^([0-9]+\.\.[0-9]+)|exact$'; - } - description - "Defines a range for the masklength, or 'exact' if - the prefix has an exact length. - - Example: 10.3.192.0/21 through 10.3.192.0/24 would be - expressed as prefix: 10.3.192.0/21, - masklength-range: 21..24. - - Example: 10.3.192.0/21 would be expressed as - prefix: 10.3.192.0/21, - masklength-range: exact"; - } - } - - grouping prefix-state { - description - "Operational state data for prefix definitions"; - } - - grouping prefix-top { - description - "Top-level grouping for prefixes in a prefix list"; - - container prefixes { - description - "Enclosing container for the list of prefixes in a policy - prefix list"; - - list prefix { - key "ip-prefix masklength-range"; - description - "List of prefixes in the prefix set"; - - leaf ip-prefix { - type leafref { - path "../config/ip-prefix"; - } - description - "Reference to the ip-prefix list key."; - } - - leaf masklength-range { - type leafref { - path "../config/masklength-range"; - } - description - "Reference to the masklength-range list key"; - } - - container config { - description - "Configuration data for prefix definition"; - - uses prefix-config; - } - - container state { - - config false; - - description - "Operational state data for prefix definition"; - - uses prefix-config; - uses prefix-state; - } - } - } - } - - grouping neighbor-set-config { - description - "Configuration data for neighbor set definitions"; - - leaf name { - type string; - description - "name / label of the neighbor set -- this is used to - reference the set in match conditions"; - } - - leaf-list address { - type oc-inet:ip-address; - description - "List of IP addresses in the neighbor set"; - } - } - - grouping neighbor-set-state { - description - "Operational state data for neighbor set definitions"; - } - - grouping neighbor-set-top { - description - "Top-level data definition for a list of IPv4 or IPv6 - neighbors which can be matched in a routing policy"; - - container neighbor-sets { - description - "Enclosing container for the list of neighbor set - definitions"; - - list neighbor-set { - key "name"; - description - "List of defined neighbor sets for use in policies."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the neighbor set name list key."; - } - - container config { - description - "Configuration data for neighbor sets."; - - uses neighbor-set-config; - } - - container state { - - config false; - - description - "Operational state data for neighbor sets."; - - uses neighbor-set-config; - uses neighbor-set-state; - } - } - } - } - - grouping tag-set-config { - description - "Configuration data for tag set definitions."; - - leaf name { - type string; - description - "name / label of the tag set -- this is used to reference - the set in match conditions"; - } - - leaf-list tag-value { - type oc-pol-types:tag-type; - description - "Value of the tag set member"; - } - } - - grouping tag-set-state { - description - "Operational state data for tag set definitions."; - } - - grouping tag-set-top { - description - "Top-level data definitions for a list of tags which can - be matched in policies"; - - container tag-sets { - description - "Enclosing container for the list of tag sets."; - - list tag-set { - key "name"; - description - "List of tag set definitions."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the tag set name list key"; - } - - container config { - description - "Configuration data for tag sets"; - - uses tag-set-config; - } - - container state { - - config false; - - description - "Operational state data for tag sets"; - - uses tag-set-config; - uses tag-set-state; - } - } - } - } - - grouping generic-defined-sets { - description - "Data definitions for pre-defined sets of attributes used in - policy match conditions. These sets are generic and can - be used in matching conditions in different routing - protocols."; - - uses prefix-set-top; - uses neighbor-set-top; - uses tag-set-top; - } - - grouping match-set-options-group { - description - "Grouping containing options relating to how a particular set - should be matched"; - - leaf match-set-options { - type oc-pol-types:match-set-options-type; - description - "Optional parameter that governs the behaviour of the - match operation"; - } - } - - grouping match-set-options-restricted-group { - description - "Grouping for a restricted set of match operation modifiers"; - - leaf match-set-options { - type oc-pol-types:match-set-options-restricted-type; - description - "Optional parameter that governs the behaviour of the - match operation. This leaf only supports matching on ANY - member of the set or inverting the match. Matching on ALL is - not supported"; - } - } - - grouping match-interface-condition-config { - description - "Configuration data for interface match condition"; - - uses oc-if:interface-ref-common; - } - - grouping match-interface-condition-state { - description - "Operational state data for interface match condition"; - } - - grouping match-interface-condition-top { - description - "Top-level grouping for the interface match condition"; - - container match-interface { - description - "Top-level container for interface match conditions"; - - container config { - description - "Configuration data for interface match conditions"; - - uses match-interface-condition-config; - } - - container state { - - config false; - - description - "Operational state data for interface match conditions"; - - uses match-interface-condition-config; - uses match-interface-condition-state; - } - - } - } - - grouping prefix-set-condition-config { - description - "Configuration data for prefix-set conditions"; - - leaf prefix-set { - type leafref { - path "../../../../../../../../defined-sets/" + - "prefix-sets/prefix-set/config/name"; - } - description "References a defined prefix set"; - } - uses match-set-options-restricted-group; - } - - - grouping prefix-set-condition-state { - description - "Operational state data for prefix-set conditions"; - } - - grouping prefix-set-condition-top { - description - "Top-level grouping for prefix-set conditions"; - - container match-prefix-set { - description - "Match a referenced prefix-set according to the logic - defined in the match-set-options leaf"; - - container config { - description - "Configuration data for a prefix-set condition"; - - uses prefix-set-condition-config; - } - - container state { - - config false; - - description - "Operational state data for a prefix-set condition"; - - uses prefix-set-condition-config; - uses prefix-set-condition-state; - } - } - } - - grouping neighbor-set-condition-config { - description - "Configuration data for neighbor-set conditions"; - - leaf neighbor-set { - type leafref { - path "../../../../../../../../defined-sets/neighbor-sets/" + - "neighbor-set/name"; - //TODO: require-instance should be added when it's - //supported in YANG 1.1 - //require-instance true; - } - description "References a defined neighbor set"; - } - - uses match-set-options-restricted-group; - } - - grouping neighbor-set-condition-state { - description - "Operational state data for neighbor-set conditions"; - } - - grouping neighbor-set-condition-top { - description - "Top-level grouping for neighbor-set conditions"; - - container match-neighbor-set { - description - "Match a referenced neighbor set according to the logic - defined in the match-set-options-leaf"; - - container config { - description - "Configuration data "; - - uses neighbor-set-condition-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses neighbor-set-condition-config; - uses neighbor-set-condition-state; - } - } - } - - grouping tag-set-condition-config { - description - "Configuration data for tag-set condition statements"; - - leaf tag-set { - type leafref { - path "../../../../../../../../defined-sets/tag-sets/tag-set" + - "/name"; - //TODO: require-instance should be added when it's - //supported in YANG 1.1 - //require-instance true; - } - description "References a defined tag set"; - } - uses match-set-options-restricted-group; - } - - grouping tag-set-condition-state { - description - "Operational state data for tag-set condition statements"; - } - - grouping tag-set-condition-top { - description - "Top-level grouping for tag-set conditions"; - - container match-tag-set { - description - "Match a referenced tag set according to the logic defined - in the match-options-set leaf"; - - container config { - description - "Configuration data for tag-set conditions"; - - uses tag-set-condition-config; - } - - container state { - - config false; - - description - "Operational state data tag-set conditions"; - - uses tag-set-condition-config; - uses tag-set-condition-state; - } - } - } - - grouping generic-conditions { - description "Condition statement definitions for checking - membership in a generic defined set"; - - uses match-interface-condition-top; - uses prefix-set-condition-top; - uses neighbor-set-condition-top; - uses tag-set-condition-top; - - } - - grouping generic-actions { - description - "Definitions for common set of policy action statements that - manage the disposition or control flow of the policy"; - - leaf policy-result { - type policy-result-type; - description - "Select the final disposition for the route, either - accept or reject."; - } - } - - - grouping policy-conditions-config { - description - "Configuration data for general policy conditions, i.e., those - not related to match-sets"; - - leaf call-policy { - type leafref { - path "../../../../../../../" + - "oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:name"; - //TODO: require-instance should be added when - //it is supported in YANG 1.1 - //require-instance true; - } - description - "Applies the statements from the specified policy - definition and then returns control the current - policy statement. Note that the called policy may - itself call other policies (subject to - implementation limitations). This is intended to - provide a policy 'subroutine' capability. The - called policy should contain an explicit or a - default route disposition that returns an - effective true (accept-route) or false - (reject-route), otherwise the behavior may be - ambiguous and implementation dependent"; - } - - leaf install-protocol-eq { - type identityref { - base oc-pol-types:INSTALL_PROTOCOL_TYPE; - } - description - "Condition to check the protocol / method used to install - the route into the local routing table"; - } - } - - grouping policy-conditions-state { - description - "Operational state data for policy conditions"; - } - - grouping policy-conditions-top { - description - "Top-level grouping for policy conditions"; - - container conditions { - description - "Condition statements for the current policy statement"; - - container config { - description - "Configuration data for policy conditions"; - - uses policy-conditions-config; - } - - container state { - - config false; - - description - "Operational state data for policy conditions"; - - uses policy-conditions-config; - uses policy-conditions-state; - } - uses generic-conditions; - } - } - - grouping policy-statements-config { - description - "Configuration data for policy statements"; - - leaf name { - type string; - description - "name of the policy statement"; - } - } - - grouping policy-statements-state { - description - "Operational state data for policy statements"; - } - - - - grouping policy-actions-config { - description - "Configuration data for policy actions"; - - uses generic-actions; - } - - grouping policy-actions-state { - description - "Operational state data for policy actions"; - } - - grouping policy-actions-top { - description - "Top-level grouping for policy actions"; - - container actions { - description - "Top-level container for policy action statements"; - - container config { - description - "Configuration data for policy actions"; - - uses policy-actions-config; - } - - container state { - - config false; - - description - "Operational state data for policy actions"; - - uses policy-actions-config; - uses policy-actions-state; - } - } - } - - grouping policy-statements-top { - description - "Top-level grouping for the policy statements list"; - - container statements { - description - "Enclosing container for policy statements"; - - list statement { - key "name"; - // TODO: names of policy statements within a policy - // definition should probably be optional, however, YANG - // requires a unique id for lists - ordered-by user; - description - "Policy statements group conditions and actions - within a policy definition. They are evaluated in - the order specified (see the description of policy - evaluation at the top of this module."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to list key"; - } - - container config { - description - "Configuration data for policy statements"; - - uses policy-statements-config; - } - - container state { - - config false; - - description - "Operational state data for policy statements"; - - uses policy-statements-config; - uses policy-statements-state; - } - - uses policy-conditions-top; - uses policy-actions-top; - } - } - } - - grouping defined-sets-top { - description - "Top-level grouping for defined set definitions"; - - container defined-sets { - description - "Predefined sets of attributes used in policy match - statements"; - - uses generic-defined-sets; - } - } - - grouping policy-definitions-config { - description - "Configuration data for policy definitions"; - - leaf name { - type string; - description - "Name of the top-level policy definition -- this name - is used in references to the current policy"; - } - } - - grouping policy-definitions-state { - description - "Operational state data for policy definitions"; - } - - grouping policy-definitions-top { - description - "Top-level grouping for the policy definition list"; - - container policy-definitions { - description - "Enclosing container for the list of top-level policy - definitions"; - - list policy-definition { - key "name"; - description - "List of top-level policy definitions, keyed by unique - name. These policy definitions are expected to be - referenced (by name) in policy chains specified in import - or export configuration statements."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for policy defintions"; - - uses policy-definitions-config; - } - - container state { - - config false; - - description - "Operational state data for policy definitions"; - - uses policy-definitions-config; - uses policy-definitions-state; - } - - uses policy-statements-top; - } - } - } - - grouping routing-policy-top { - description - "Top level container for OpenConfig routing policy"; - - container routing-policy { - description - "Top-level container for all routing policy configuration"; - - - uses defined-sets-top; - - uses policy-definitions-top; - } - } - - grouping apply-policy-import-config { - description - "Configuration data for applying import policies"; - - leaf-list import-policy { - type leafref { - path "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:name"; - //TODO: require-instance should be added when it's - //supported in YANG 1.1 - //require-instance true; - } - ordered-by user; - description - "list of policy names in sequence to be applied on - receiving a routing update in the current context, e.g., - for the current peer group, neighbor, address family, - etc."; - } - - leaf default-import-policy { - type default-policy-type; - default REJECT_ROUTE; - description - "explicitly set a default policy if no policy definition - in the import policy chain is satisfied."; - } - - } - - grouping apply-policy-export-config { - description - "Configuration data for applying export policies"; - - leaf-list export-policy { - type leafref { - path "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + - "oc-rpol:policy-definition/oc-rpol:name"; - //TODO: require-instance should be added when it's - //supported in YANG 1.1 - //require-instance true; - } - ordered-by user; - description - "list of policy names in sequence to be applied on - sending a routing update in the current context, e.g., - for the current peer group, neighbor, address family, - etc."; - } - - leaf default-export-policy { - type default-policy-type; - default REJECT_ROUTE; - description - "explicitly set a default policy if no policy definition - in the export policy chain is satisfied."; - } - } - - - grouping apply-policy-config { - description - "Configuration data for routing policies"; - - uses apply-policy-import-config; - uses apply-policy-export-config; - - } - - - - grouping apply-policy-state { - description - "Operational state associated with routing policy"; - - //TODO: identify additional state data beyond the intended - //policy configuration. - } - - grouping apply-policy-group { - description - "Top level container for routing policy applications. This - grouping is intended to be used in routing models where - needed."; - - container apply-policy { - description - "Anchor point for routing policies in the model. - Import and export policies are with respect to the local - routing table, i.e., export (send) and import (receive), - depending on the context."; - - container config { - description - "Policy configuration data."; - - uses apply-policy-config; - } - - container state { - - config false; - description - "Operational state for routing policy"; - - uses apply-policy-config; - uses apply-policy-state; - } - } - } - - uses routing-policy-top; - -} diff --git a/src/plugins/yang/openconfig/openconfig-rsvp-sr-ext.yang b/src/plugins/yang/openconfig/openconfig-rsvp-sr-ext.yang deleted file mode 100644 index f9af96d..0000000 --- a/src/plugins/yang/openconfig/openconfig-rsvp-sr-ext.yang +++ /dev/null @@ -1,400 +0,0 @@ -module openconfig-rsvp-sr-ext { - yang-version "1"; - - namespace "http://openconfig.net/yang/rsvp-sr-ext"; - prefix "oc-sr-rsvp-ext"; - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-types { prefix "oc-types"; } - import openconfig-network-instance { prefix "oc-ni"; } - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module adds extensions to the OpenConfig MPLS models to - provide extensions which allow the coexistence of RSVP-TE and - Segment Routing (SR) within the same network. It augments the - existing OpenConfig segment routing (SR) and RSVP-TE models - where required."; - - oc-ext:openconfig-version "0.2.0"; - - revision 2018-04-13 { - description - "Replace boolean with modes for measure-sr-traffic."; - reference "0.2.0"; - } - - revision 2017-03-06 { - description - "Initial revision."; - reference "0.1.0"; - } - - grouping bandwidth-measurement-global-state { - description - "Operational state parameters for bandwidth measurement which - apply globally to the device."; - - leaf effective-adjustment-interval { - type uint32; - units "seconds"; - description - "The effective adjustment interval that is being used by - the system. In the case that the adjustment-interval leaf - is set to a non-integer multiple of the collection-interval, - and the system does not support this, the value of this leaf - should reflect the effective value of the adjustment interval - that it has selected. In the case where no rounding of the - adjustment interval has occurred, this value should have the - same value as the adjustment-inerval leaf."; - } - } - - grouping bandwidth-measurement-global-config { - description - "Configuration parameters for bandwidth measurement which apply - globally to the device."; - - leaf measure-sr-traffic { - type enumeration { - enum MEASURE_ONLY { - description - "Only measure the SR traffic being sent via an interface, - and do not flood it into the IGP."; - } - enum MEASURE_AND_FLOOD { - description - "Measure the SR traffic being sent via an interface and - flood it into the IGP."; - } - } - description - "Parameter enabling SR traffic measurement - and optional flooding into IGP."; - reference - "draft-sitaraman-sr-rsvp-coexistence-rec-01"; - } - - // TODO(robjs): For future extension, traffic accounting for - // non-SR, non-RSVP traffic could be added here. e.g., LDP, - // BGP-LU etc. - - leaf collection-interval { - type uint32; - units "seconds"; - description - "The interval at which the collection of interface - statistics relating to non-RSVP-TE traffic should be - performed"; - reference - "draft-sitaraman-sr-rsvp-coexistence-rec-01"; - } - - leaf adjustment-interval { - type uint32; - units "seconds"; - description - "The interval after which an adjustment to the utilised - bandwidth on the interface is made. This value must be - greater than, or equal to, the collection interval for - statistics. This value is referred to as N in - draft-sitaraman-sr-rsvp-coexistence-rec-01. - - After N seconds have expired, the - arithmetic mean of the samples is taken, and this is - considered as the non-RSVP-TE utilisation of the - interface. In the case that the adjustment interval is - an integer >1 multiple of the collection interval, this - serves to provide smoothing of the collected bandwidth - statistics."; - reference - "draft-sitaraman-sr-rsvp-coexistence-rec-01"; - } - - leaf bandwidth-multiplier { - type decimal64 { - fraction-digits 4; - } - default 1.0000; - description - "A multiplier applied to the sampled bandwidth which - determines the value that is propagated to the IGP TED. - By default this value is 1.0000, and hence the actual - sampled value is flooded."; - } - } - - grouping bandwidth-measurement-update-config { - description - "Configuration parameters related to when the bandwidth - measurement information is used to update the IGP TED."; - - leaf update-trigger { - type enumeration { - enum ADJUSTED_MAX_RESERVABLE_PCT { - description - "Update of a new maximum reservable bandwidth IGP - TLV is based on the value changing >= X% of - the currently flooded adjusted-absolute-subscription-bw. - The percentage of this value that is used is specified - by the adjusted-max-reservable-bw-pct leaf."; - } - enum SR_TRAFFIC_PCT { - description - "Update of the new maximum reservable bandwidth IGP - TLV is based on the value changing >= X% of the last - calculated segment routing traffic utilisation for the - interface. The percentage delta of this value is - specified by the sr-traffic-pct leaf."; - } - } - description - "The trigger that should be used to determine when the IGP - TED is updated with new information as to the effective - maximum reservable bandwidth - (adjusted-absolute-subscription-bw)"; - } - - leaf adjusted-max-reservable-bw-pct { - when "../update-trigger = 'ADJUSTED_MAX_RESERVABLE_PCT'" { - description - "Only allow the adjusted-max-reservable-bw update trigger - to be specified when the update-trigger mode is specified - to be a percentage of the currently flooded value."; - } - type oc-types:percentage; - description - "The delta in the adjusted-max-reservable-bandwidth that - should trigger an update in the value which is flooded - through the IGP TED. - The delta is measured as a percentage of the - current adjusted value of the maximum reservable bandwidth - of the interface, as specified by the - adjusted-absolute-subscription-bw RSVP-TE leaf."; - reference - "draft-sitaraman-sr-rsvp-coexistence-rec-01"; - } - - leaf sr-traffic-pct { - when "../update-trigger = 'SR_TRAFFIC_PCT'" { - description - "Only allow the SR traffic percentage trigger to be - specified when the update trigger is defined to be a - percentage of the last calculated SR traffic value."; - } - type oc-types:percentage; - description - "The change in the calculated SR traffic on the interface - that should trigger an update in the value of the - maximum reservable bandwidth flooded through the IGP TED. - The value is specified as a percentage of the - last-calculated-sr-traffic state leaf."; - } - } - - grouping bandwidth-measurement-global-structural { - description - "Structural grouping for the measurement of segment routing - traffic, and its advertisement into the IGP TED."; - - container bandwidth-measurement { - description - "Configuration and operational state parameters related to - how bandwidth utilisation is measured and flooded into the - IGP."; - - container config { - description - "Configuration parameters relating to bandwidth - measurement."; - - uses bandwidth-measurement-global-config; - } - - container state { - config false; - description - "Operational state parameters relating to bandwidth - measurement"; - - uses bandwidth-measurement-global-config; - uses bandwidth-measurement-global-state; - } - - container update-trigger { - description - "Configuration and operational state parameters related - to the update trigger for flooding new bandwidth - information into the IGP."; - - container config { - description - "Configuration parameters related to the bandwidth - measurement update trigger."; - - uses bandwidth-measurement-update-config; - } - - container state { - config false; - description - "Operational state parameters related to the bandwidth - measurement update trigger."; - - uses bandwidth-measurement-update-config; - } - } - } - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:mpls/oc-ni:te-global-attributes" { - description - "Add the bandwidth measurement parameters to MPLS global - traffic engineering hierarchy."; - - uses bandwidth-measurement-global-structural; - } - - grouping bandwidth-measurement-rsvp-te-adjusted-state { - description - "Logical grouping augmented into the RSVP-TE hierarchy to - provide an operational state value which reflects the - adjusted RSVP-TE available bandwidth."; - - leaf adjusted-absolute-subscription-bw { - type uint64; - units "kbps"; - description - "The adjusted absolute value (in kbps) of the - bandwidth which is reservable to RSVP-TE on the - local system. In the case that the bandwidth-measurement - configuration does not account for non-RSVP-TE traffic - then this value is equal to the - calculated-absolute-subscription-bw, in the case that - non-RSVP-TE traffic is being accounted for, it is lower - such that calculated-absolute-subscription-bw - - adjusted-absolute-subscription-bw = the current calculated - non-RSVP-TE traffic. - - This value reflects the last flooded value of the maximum - reservable bandwidth, or subscription."; - } - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:mpls/oc-ni:signaling-protocols/oc-ni:rsvp-te/" + - "oc-ni:interface-attributes/oc-ni:interface/" + - "oc-ni:subscription/oc-ni:state" { - - description - "Augmentation to add the adjusted RSVP-TE available bandwidth - state to the RSVP-TE signaling protocol."; - - uses bandwidth-measurement-rsvp-te-adjusted-state; - } - - grouping bandwidth-measurement-intf-structural { - description - "Structural grouping containing interface bandwidth - measurement configuration and operational state - parameters."; - - container bandwidth-measurement { - description - "Configuration and operational state parameters relating to - per-interface bandwidth measurement. These parameters are - used in the case that RSVP-TE coexists with other MPLS - signaling protocols on an interface."; - - container state { - config false; - description - "Operational state parameters relating to the containing - interface's bandwidth measurement."; - - uses bandwidth-measurement-intf-state; - } - } - } - - grouping bandwidth-measurement-intf-state { - description - "Operational state parameters per-interface for the measured - bandwidth on an interface"; - - leaf last-sample-time { - type oc-types:timeticks64; - description - "The time at which the last sample of bandwidth utilisation - for both RSVP-TE and non-RSVP-TE traffic was taken. This value - is represented in nanoseconds since the Unix epoch."; - } - - leaf last-sample-measured-rsvp-util { - type uint64; - units "kbps"; - description - "The measured RSVP-TE bandwidth utilisation at the last sample - (whose time is indicated in last-sample-time). This value is - expressed as a 64-bit unsigned integer representing the number - of kilobits per second that RSVP-TE traffic is consuming on - the interface."; - } - - leaf last-sample-measured-sr-util { - type uint64; - units "kbps"; - description - "The measured Segment Routing bandwidth utilisation at the - last sample (whose time is indicated in last-sample-time). - This value is expressed as a 64-bit unsigned integer - representing the number of kilobits per second that Segment - Routing traffic is consuming on the interface."; - } - - leaf last-calculated-time { - type oc-types:timeticks64; - description - "The time at which the last calculated value for bandwidth - utilisation was performed."; - } - - leaf last-calculated-sr-utilisation { - type uint64; - description - "The last calculated value of the Segment Routing utilisation - (taken post any averaging or adjustment that occurs). This - value is updated regardless of whether the value was flooded - or not."; - } - - leaf last-flooded-time { - type oc-types:timeticks64; - description - "The time, expressed in nanoseconds since the epoch, at which - the bandwidth utilisation of non-RSVP-TE traffic resulted in - the value being flooded in the IGP. If the configuration of the - local system specifies a 0% change requires flooding, this leaf - will always reflect the value of the last-calculated-time. In - systems that have suppression due to a >0% delta being required - then it indicates the last time that the percentage threshold - was exceeded."; - } - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:mpls" + - "/oc-ni:te-interface-attributes/oc-ni:interface" { - description - "Augment the per-interface bandwidth measurement parameters into the - MPLS hierarchy of network instance."; - - uses bandwidth-measurement-intf-structural; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-segment-routing.yang b/src/plugins/yang/openconfig/openconfig-segment-routing.yang deleted file mode 100644 index f19b2d8..0000000 --- a/src/plugins/yang/openconfig/openconfig-segment-routing.yang +++ /dev/null @@ -1,780 +0,0 @@ -module openconfig-segment-routing { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/sr"; - prefix "oc-sr"; - - // import some basic types - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-mpls-types { prefix "oc-mpls-t"; } - import openconfig-interfaces { prefix "oc-if"; } - import ietf-inet-types { prefix "inet"; } - import ietf-yang-types { prefix "yang"; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Configuration and operational state parameters relating to the - segment routing. This module defines a number of elements which are - instantiated in multiple places throughout the OpenConfig collection - of models. - - Particularly: - - SRGB+LB dataplane instances - directly instantied by SR. - - SRGB+LB dataplane reservations - instantiated within MPLS and future SR - dataplanes. - - SR SID advertisements - instantiated within the relevant IGP. - - SR-specific counters - instantied within the relevant dataplane."; - - oc-ext:openconfig-version "0.0.3"; - - revision "2017-01-12" { - description - "Minor compliance fixes."; - reference "0.0.3"; - } - - revision "2016-12-15" { - description - "Updated revision of SR module."; - reference "0.0.2"; - } - - revision "2016-07-28" { - description - "Initial revision of SR module."; - reference "0.0.1"; - } - - typedef sr-dataplane-type { - type enumeration { - enum MPLS { - description - "The entity uses MPLS labels as Segment Identifiers."; - } - enum IPV6 { - description - "The entity uses IPv6 prefixes as Segment Identifiers."; - } - } - description - "Types of data plane that can be used to instantiate a Segment - Routing block of SIDs."; - } - - typedef sr-sid-type { - type union { - type oc-mpls-t:mpls-label; - type inet:ipv6-address-no-zone; - } - description - "The defined value of a segment identifier."; - } - - grouping srgb-config { - description - "Configuration parameters relating to the SRGB."; - - leaf local-id { - type string; - description - "Unique identifier for the segment routing global block on - the local system."; - } - - leaf dataplane-type { - type sr-dataplane-type; - description - "The dataplane being used to instantiate the SRGB. When MPLS is specified - the set of MPLS label blocks that are defined in the mpls-label-blocks - list are used to make up the SRGB. When IPv6 is specified, the set of IPv6 - prefixes specified in the ipv6-prefixes list are used."; - } - - leaf-list mpls-label-blocks { - when "../dataplane-type = 'MPLS'" { - description - "Allow the MPLS label block to be specified only for SRGBs that are - using the MPLS dataplane."; - } - type leafref { - // We are at /network-instances/network-instance/segment-routing/ - // srgbs/srgb/config/mpls-label-blocks - path "../../../../../mpls/global/reserved-label-blocks/" + - "reserved-label-block/config/local-id"; - } - description - "A list of refences to the label blocks that are used to make - up the SRGB."; - } - - leaf-list ipv6-prefixes { - when "../dataplane-type = 'IPV6'" { - description - "Allow IPv6 prefixes to be specified only when the dataplane - realisation of the SRGB is IPv6."; - } - type inet:ipv6-prefix; - description - "A list of IPv6 prefixes which are to be used for segment routing using - the IPv6 dataplane."; - } - } - - grouping srgb-state { - description - "Operational state parameters relating to the SRGB."; - - leaf size { - type uint32; - description - "The total number of SRGB entries that are available within the SRGB."; - } - - leaf used { - type uint32; - description - "The total number of SRGB entries that have already been alocated by - protocols referencing the SRGB."; - } - } - - grouping srlb-config { - description - "Configuration parameters relating to an SRLB."; - - leaf local-id { - type string; - description - "A unique local identifier used for the Segment Routing Local Block. - The identifier is used when referencing the SRLB within other - contexts."; - } - - leaf dataplane-type { - type sr-dataplane-type; - description - "The dataplane that is to be used for the Segment Routing Local Block. - When MPLS is specified, the local block corresponds to a block of MPLS - labels; when IPv6 is specified it corresponds to an IPv6 prefix."; - } - - leaf mpls-label-block { - when "../dataplane-type = 'MPLS'" { - description - "Allow the MPLS label block to be specified only for SRLBs that are - using the MPLS dataplane."; - } - type leafref { - path "../../../../../mpls/global/reserved-label-blocks/" + - "reserved-label-block/config/local-id"; - } - description - "A reference to the MPLS label block that is used to contain the - SIDs of the SRLB."; - } - - leaf ipv6-prefix { - when "../dataplane-type = 'IPV6'" { - description - "Allow IPv6 prefixes to be specified only when the dataplane - realisation of the SRGB is IPv6."; - } - type inet:ipv6-prefix; - description - "The IPv6 prefix that is used for the SRLB."; - } - } - - grouping sr-structural { - description - "Top-level structural grouping defining Segment Routing Global Blocks."; - - container srgbs { - description - "Configuration and operational state parameters relating to the - SRGBs defined for the system."; - - list srgb { - key "local-id"; - - description - "A single definition of an SRGB which may comprise of multiple - sets of dataplane addresses (IPv6 addresses, or MPLS labels)."; - - leaf local-id { - type leafref { - path "../config/local-id"; - } - description - "A reference to the identifier for the SRGB."; - } - - container config { - description - "Configuration parameters relating to the SRGB."; - uses srgb-config; - } - - container state { - config false; - description - "State parameters relating to the SRGB."; - uses srgb-config; - uses srgb-state; - } - } - } - - container srlbs { - description - "Configuration and operational state parameters relating to the - Segment Routing Local Blocks (SRLBs) defined for the system."; - - list srlb { - key "local-id"; - - description - "A definition of a Segment Routing Local Block, defined to be - a set of Segment Identifiers (specified as MPLS labels or - IPv6 addreses) that are defined for local allocation by the - system. A block may optionally be advertised into an IGP."; - - leaf local-id { - type leafref { - path "../config/local-id"; - } - description - "Reference to the local identifier used for the SRLB."; - } - - container config { - description - "Configuration parameters relating to the SRLB."; - uses srlb-config; - } - - container state { - config false; - description - "Operational state parmeters relating to the SRLB."; - uses srlb-config; - } - } - } - } - - grouping sr-mpls-top { - description - "Structural grouping defining SR definition within MPLS."; - - container segment-routing { - description - "MPLS-specific Segment Routing configuration and operational state - parameters"; - - container aggregate-sid-counters { - description - "Per-SID counters aggregated across all interfaces on the local system"; - - list aggregate-sid-counter { - key "mpls-label"; - config false; - - description - "Counters aggregated across all of the interfaces of the local - system corresponding to traffic received or forwarded with a - particular SID"; - - leaf mpls-label { - type leafref { - path "../state/mpls-label"; - } - description - "The MPLS label representing the segment identifier"; - } - - container state { - config false; - description - "State parameters for per-SID statistics"; - uses sr-mpls-sid-counters-state; - uses sr-mpls-common-counters; - } - } - } - - container interfaces { - description - "Interface related Segment Routing parameters."; - - list interface { - key "interface-id"; - - description - "Parameters and MPLS-specific configuration relating to Segment - Routing on an interface."; - - leaf interface-id { - type leafref { - path "../config/interface-id"; - } - description - "A reference to the ID for the interface for which SR is - configured"; - } - - container config { - description - "MPLS-specific Segment Routing configuration parameters - related to an interface."; - uses sr-mpls-interface-config; - } - - container state { - config false; - description - "MPLS-specific Segment Routing operational state parameters - related to an interface."; - uses sr-mpls-interface-config; - uses sr-mpls-interface-state; - } - - container sid-counters { - description - "Per-SID statistics for MPLS"; - - list sid-counter { - key "mpls-label"; - config false; - - description - "Per segment identifier counters for the MPLS dataplane."; - - leaf mpls-label { - type leafref { - path "../state/mpls-label"; - } - description - "The MPLS label representing the segment identifier"; - } - - container state { - config false; - description - "State parameters for per-SID statistics"; - uses sr-mpls-sid-counters-state; - uses sr-mpls-common-counters; - } - - container forwarding-classes { - description - "Per-SID per-forwarding class counters for Segment Routing."; - - list forwarding-class { - key "exp"; - config false; - - description - "SID entries for the forwarding class associated with the - referenced MPLS EXP."; - - leaf exp { - type leafref { - path "../state/exp"; - } - description - "Reference to the value of the EXP bits of the segment - identifier."; - } - - container state { - config false; - description - "Per-SID, per forwarding class counters for Segment Routing - with the MPLS dataplane"; - - uses sr-mpls-interface-sid-fc-state; - uses sr-mpls-common-counters; - } - } - } - } - } - uses oc-if:interface-ref; - } - } - } - } - - grouping sr-mpls-interface-config { - description - "MPLS-specific Segment Routing configuration for an interface"; - - leaf interface-id { - type string; - description - "A unique identifier for the interface."; - } - } - - grouping sr-mpls-interface-state { - description - "MPLS-specific Segment Routing operational state parameters for an - interface"; - - uses sr-mpls-common-counters; - } - - grouping sr-mpls-interface-sid-fc-state { - description - "Per-SID per forwarding class statistics for SR with the MPLS dataplane"; - - leaf exp { - type uint8 { - range "0..7"; - } - description - "The value of the MPLS EXP (experimental) or Traffic Class bits that the - SID statistics relate to. Packets received with a MPLS label value - equal to the SID's MPLS label and EXP bits equal to the this value - should be counted towards the associated ingress statistics. Packets - that are forwarded to the destination MPLS label corresponding to the - SID should be counted towards this value. In the egress direction, where - forwarding follows a SID value that requires PHP at the local node, - packets should still be counted towards the egress counters."; - } - } - - grouping sr-mpls-sid-counters-state { - description - "Per-SID statistics leaves"; - - leaf mpls-label { - type oc-mpls-t:mpls-label; - description - "The MPLS label used for the segment identifier"; - } - } - - grouping sr-mpls-common-counters { - description - "Per segment identifier counters used in the model"; - - leaf in-pkts { - type yang:counter64; - description - "A cumulative counter of the packets received within the context - which have matched a label corresponding to an SR Segment Identifier."; - } - - leaf in-octets { - type yang:counter64; - description - "The cumulative counter of the total bytes received within the context - which have matched a label corresponding to an SR Segment Identifier"; - } - - leaf out-pkts { - type yang:counter64; - description - "A cumulative counter of the total number of packets transmitted by - the local system within the context which have a label imposed that - corresponds to an Segment Identifier."; - } - - leaf out-octets { - type yang:counter64; - description - "A cumulative counter of the total bytes transmitted by the local - system within the context which have a label imported that - corresponds to an SR Segment Identifier."; - } - } - - grouping sr-igp-config { - description - "Configuration parameters relating to segment routing within an - IGP."; - - leaf enabled { - type boolean; - description - "When this leaf is set to true, the segment routing extensions are - utilised within the IGP."; - } - - leaf srgb { - type leafref { - path "../../../../../../../segment-routing/srgbs/srgb/config/local-id"; - } - description - "A reference to the Segment Routing Global Block (SRGB) that is - to be used by this IGP instance."; - } - - leaf srlb { - // Leaf is defined at - // /network-instances/network-instance/protocols/protocol/<igp>/global/ - // segment-routing/config - type leafref { - path "../../../../../../../segment-routing/srlbs/srlb/config/local-id"; - } - description - "A reference to the Segment Routing Local Block (SRLB) that is to - be advertised by the IGP instance."; - } - } - - grouping sr-igp-top { - description - "Per-instance configuration and state parameters for Segment Routing - in an IGP."; - - container segment-routing { - description - "Configuration and operational state relating to segment routing."; - - container config { - description - "Configuration parameters relating to the configuration of segment - routing for the IGP instance."; - uses sr-igp-config; - } - - container state { - config false; - description - "Operational state parameters relating to segment routing for the - IGP instance."; - uses sr-igp-config; - } - } - } - - grouping sr-igp-interface-prefix-sid-config { - description - "Configuration parameters relating to an IGP prefix SID advertisement"; - - leaf prefix { - type inet:ip-prefix; - description - "The IP prefix for which the IGP prefix SID should be advertised. The - value specified is a local prefix on the interface which is advertised - into the IGP."; - } - - leaf sid-id { - type sr-sid-type; - description - "The Segment Identifier to be used when advertising the IGP Prefix SID."; - } - - leaf label-options { - type enumeration { - enum NO_PHP { - description - "When this value is specified, the penultimate hop must not pop - the Prefix-SID label before forwarding it to the local system."; - } - enum EXPLICIT_NULL { - description - "When set, the penultimate hop must swap the prefix SID for the - relevant explicit null label before forwarding the packet."; - } - } - description - "The options associated with the IGP prefix SID for MPLS. The value - of this leaf specifies the option that the SID should be advertised - into the IGP with."; - } - } - - grouping sr-igp-interface-adjsid-config { - description - "Configuration parameters relating to an Adj-SID on an interface"; - - leaf sid-id { - type union { - type sr-sid-type; - type enumeration { - enum DYNAMIC { - description - "The SID chosen for the Adjacency SID should be dynamically - allocated from the system's dynamic range of Segment - Identifiers. For MPLS, this range should be considered to be - those labels that do not fall within a reserved label block."; - } - } - } - description - "The value of the Adj-SID to be advertised. Where a static SID - identifier is specified, this should be advertised directly by the - system. Where the DYNAMIC value is specified, this should be treated - as a dynamically allocated value. When the MPLS data plane is in use - the dynamic value should not fall within a reserved-label-block."; - } - - leaf protection-eligible { - type boolean; - default true; - description - "Whether the Adj-SID should be considered to be eligible for protection - using IP or MPLS FRR during a network failure. When this value is set to - true, the B-flag of the Adj-SID is set to 1, and the local system should - provide FRR paths for the associated label forwarding entry. When it is - set to false, the local system must not provide FRR for the specified - LFIB entry."; - } - - leaf group { - type boolean; - default false; - description - "When set to true, the Adj-SID is indicated to be part of a group, and - the G flag is set to 1 in the corresponding advertisement in the IGP."; - } - - leaf neighbor { - type inet:ip-address; - description - "The remote system on the interface with which the Adj-SID is - associated."; - } - } - - grouping sr-igp-interface-adjsid-state { - description - "Operational state parameters relating to the adjacency SID for an - interface"; - - leaf allocated-dynamic-local { - type sr-sid-type; - description - "Where an Adjacency SID with a dynamic value is to be allocated by - the system, this leaf reports to the value of the Adj-SID allocated - to this interface."; - } - } - - grouping sr-igp-interface-top { - description - "Per-interface configuration and operational state relating to an - interface within the IGP."; - - container segment-routing { - description - "Configuration and operatioanl state parameters relating to segment - routing for an interface within the IGP."; - - container prefix-sids { - description - "Configuration and operational state parameters relating to - the advertisement of a segment routing IGP-Prefix SID for this - interface."; - - list prefix-sid { - key "prefix"; - - description - "An IGP prefix that should have a segment routing IGP-Prefix SID - allocated to it. The value of the SID is specified by the SID ID, - as an absolute value. If the absolute value falls within the SRGB, - the Global flag should be advertised by the system."; - - leaf prefix { - type leafref { - path "../config/prefix"; - } - description - "Reference to the prefix for which the IGP-Prefix SID is to be - advertised"; - } - - container config { - description - "Configuration parameters for the IGP Prefix SID."; - uses sr-igp-interface-prefix-sid-config; - } - - container state { - config false; - description - "Operational state parameters for the IGP-Prefix SID."; - uses sr-igp-interface-prefix-sid-config; - } - } - } - - container adjacency-sids { - description - "Configuration and operational state parameters relating to - the advertisement of a segment routing adjacency SID for this - interface."; - - list adjacency-sid { - key "neighbor sid-id"; - - description - "An Adjacency SID to be advertised for the specified interface. - The Adj-SID's identifier (the SID ID) must be unique, with flags - specified indicating the parameters that should be set for the SID. - Where a SID value is specified that is allocated from the SRGB, the - global flag must be set by the system."; - - leaf sid-id { - type leafref { - path "../config/sid-id"; - } - description - "Reference to the segment identifier to be used by the local - system."; - } - - leaf neighbor { - type leafref { - path "../config/neighbor"; - } - description - "Reference to the neighbor with which the Adjacency SID is - associated."; - } - - container config { - description - "Configuraton parameters relating to the AdjSID."; - uses sr-igp-interface-adjsid-config; - } - - container state { - config false; - description - "Operational state parameters relating to the AdjSID."; - uses sr-igp-interface-adjsid-config; - uses sr-igp-interface-adjsid-state; - } - } - } - } - } - - grouping sr-top { - description - "Top level grouping for Segment Routing"; - - container segment-routing { - description - "Configuration and operational state parameters relating to - segment routing."; - - uses sr-structural; - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-spanning-tree-types.yang b/src/plugins/yang/openconfig/openconfig-spanning-tree-types.yang deleted file mode 100644 index 0ca9571..0000000 --- a/src/plugins/yang/openconfig/openconfig-spanning-tree-types.yang +++ /dev/null @@ -1,225 +0,0 @@ -module openconfig-spanning-tree-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/spanning-tree/types"; - - prefix "oc-stp-types"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines types related to the - spanning-tree protocol model."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2017-07-14" { - description - "Migrated to OpenConfig types; fixed missing applied state - in rapid-pvst"; - reference "0.2.0"; - } - - revision "2016-10-03" { - description - "Initial public revision"; - reference "0.1.0"; - } - - // identity statements - - identity STP_PROTOCOL { - description - "base identity for support spanning tree protocol"; - } - - identity RSTP { - base STP_PROTOCOL; - description - "Rapid Spanning Tree Protocol"; - reference "IEEE 802.1D 17"; - } - - identity MSTP { - base STP_PROTOCOL; - description - "Multiple Spanning Tree Protocol"; - reference "IEEE 802.1Q 13"; - } - - identity RAPID_PVST { - base STP_PROTOCOL; - description - "Rapid Per Vlan Spanning Tree Protocol"; - } - - identity STP_PORT_STATE { - description - "base identity for the different Spanning Tree Protocol port - states"; - reference - "IEEE 802.1D 7.4 Port States and the active topology"; - } - - identity DISABLED { - base STP_PORT_STATE; - description - "A port that is manually isolated from the network"; - } - - identity LISTENING { - base STP_PORT_STATE; - description - "Processing BPDUs and building active toplogy"; - } - - identity LEARNING { - base STP_PORT_STATE; - description - "Building bridging tables; no forwarding of data"; - } - - identity BLOCKING { - base STP_PORT_STATE; - description - "A port that would cause a loop if it were sending data, - so it is only receiving BPDUs, untill a topology change - removes the possibliity of a loop"; - } - - identity FORWARDING { - base STP_PORT_STATE; - description - "Sending and receiving data, normal operation"; - } - - identity STP_EDGE_PORT { - description - "base identity for the different edge port modes"; - reference - "IEEE 802.1D 17.13.1"; - } - - identity EDGE_ENABLE { - base STP_EDGE_PORT; - description - "Enable edge port for the bridge port"; - } - - identity EDGE_DISABLE { - base STP_EDGE_PORT; - description - "Disable edge port for the bridge port"; - } - - identity EDGE_AUTO { - base STP_EDGE_PORT; - description - "Enable edge port autodetction for the bridge port"; - } - - identity STP_PORT_ROLE { - description - "Base identity for the different Spanning Tree Protocol port - roles"; - reference - "IEEE 802.1D 17.7 Port Role assignments"; - } - - identity ROOT { - base STP_PORT_ROLE; - description - "The port that receives the best BPDU on a bridge is the - root port"; - } - - identity DESIGNATED { - base STP_PORT_ROLE; - description - "A port is designated if it can send the best BPDU on the - segment to which it is connected."; - } - - identity ALTERNATE { - base STP_PORT_ROLE; - description - "An alternate port receives more useful BPDUs from another - bridge and is a port blocked"; - } - - identity BACKUP { - base STP_PORT_ROLE; - description - "A backup port receives more useful BPDUs from the same - bridge it is on and is a port blocked"; - } - - // typedef statements - - typedef stp-bridge-priority-type { - type uint32 { - range 1..611440; - } - description - "The manageable component of the Bridge Identifier"; - reference "IEEE 802.1D 17.13.7 Bridge Identifier Priority"; - } - - typedef stp-port-priority-type { - type uint8 { - range 1..240; - } - description - "The manageable component of the Port Identifier, - also known as the Port Priority"; - reference - "IEEE 802.1D 17.13.10 Port Identifier Priority"; - } - - typedef stp-guard-type { - type enumeration { - enum ROOT { - description - "Enable root guard"; - } - enum LOOP { - description - "Enable loop guard"; - } - enum NONE { - description - "disable guard"; - } - } - description - "Type definition for the different STP guard for the switch port"; - reference "IEEE 802.1D 17.2"; - } - - typedef stp-link-type { - type enumeration { - enum P2P { - description - "Point-to-Point link"; - } - enum SHARED { - description - "Shared link"; - } - } - description - "Type definition for the different link types"; - reference "IEEE 802.1D 17.2"; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-spanning-tree.yang b/src/plugins/yang/openconfig/openconfig-spanning-tree.yang deleted file mode 100644 index 3a70d5e..0000000 --- a/src/plugins/yang/openconfig/openconfig-spanning-tree.yang +++ /dev/null @@ -1,823 +0,0 @@ -module openconfig-spanning-tree { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/spanning-tree"; - - prefix "oc-stp"; - - import openconfig-spanning-tree-types { prefix oc-stp-types; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-types { prefix oc-types; } - import openconfig-vlan-types { prefix oc-vlan-types; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - for the spanning tree protocol."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2017-07-14" { - description - "Migrated to OpenConfig types; fixed missing applied state - in rapid-pvst"; - reference "0.2.0"; - } - - revision "2016-10-03" { - description - "Initial public revision"; - reference "0.1.0"; - } - - - // identity statements - - - // grouping statements - - grouping stp-interfaces-state { - description - "Grouping of STP operational data for bridge port"; - - leaf port-num { - type uint16; - description - "The port number of the bridge port"; - reference "RFC4188 BRIDGE-MIB dot1dStpPort"; - } - - leaf role { - type identityref { - base oc-stp-types:STP_PORT_ROLE; - } - description - "The current role of the bridge port"; - reference - "IEEE8021-MSTP-MIB ieee8021MstpPortRole"; - } - - leaf port-state { - type identityref { - base oc-stp-types:STP_PORT_STATE; - } - description - "The current state of the bridge port"; - reference "RFC4188 BRIDGE-MIB dot1dStpPortState"; - } - - leaf designated-root-priority { - type oc-stp-types:stp-bridge-priority-type; - description - "The bridge priority of the bridge recorded as the - root in the configuration BPDUs transmitted by the designated - bridge for the segment to which the port is attached"; - reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedRoot"; - } - - leaf designated-root-address { - type oc-yang:mac-address; - description - "The bridge address of the bridge recorded as the - root in the configuration BPDUs transmitted by the designated - bridge for the segment to which the port is attached"; - reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedRoot"; - } - - leaf designated-cost { - type uint32; - description - "The path cost of the Designated Port of the - segment connected to this port"; - reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedCost"; - } - - leaf designated-bridge-priority { - type oc-stp-types:stp-bridge-priority-type; - description - "The bridge priority of the bridge that this port considers - to be the designated bridge for this port's segment."; - reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedBridge"; - } - - leaf designated-bridge-address { - type oc-yang:mac-address; - description - "The bridge address of the bridge that this port considers - to be the designated bridge for this port's segment."; - reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedBridge"; - } - - leaf designated-port-priority { - type oc-stp-types:stp-port-priority-type; - description - "The Port priority of the port on the Designated - Bridge for this port's segment, two octet string"; - reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedPort"; - } - - leaf designated-port-num { - type uint16; - description - "The Port number of the port on the Designated - Bridge for this port's segment, two octet string"; - reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedPort"; - } - - leaf forward-transisitions { - type oc-yang:counter64; - description - "The number of times this port has transitioned - from the Learning state to the Forwarding state"; - reference "RFC4188 BRIDGE-MIB dot1dStpPortForwardTransitions"; - } - - container counters { - description - "The BPDU packet transmition statistics"; - - leaf bpdu-sent { - type oc-yang:counter64; - description - "The number of BPDU packet sent"; - } - - leaf bpdu-received { - type oc-yang:counter64; - description - "The number of BPDU packet received"; - } - } - } - - grouping stp-interfaces-config { - description - "Grouping of STP configuration for bridge port"; - - leaf name { - type oc-if:base-interface-ref; - description - "Reference to the STP ethernet interface"; - } - - leaf cost { - type uint32 { - range 1..200000000; - } - description - "The port's contribution, when it is the Root Port, - to the Root Path Cost for the Bridge"; - reference - "IEEE 802.1D 17.13.11 PortPathCost"; - } - - leaf port-priority { - type oc-stp-types:stp-port-priority-type; - description - "The manageable component of the Port Identifier, - also known as the Port Priority"; - reference - "IEEE 802.1D 17.13.10 Port Identifier Priority"; - } - } - - grouping stp-interfaces-top { - description - "Grouping of STP configuration and operation data for - bridge port"; - - container interfaces { - description - "Enclosing container for the list of interface references"; - - list interface { - key "name"; - description - "List of interfaces on which STP is enable"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for STP on each interface"; - - uses stp-interfaces-config; - } - - container state { - - config false; - - description - "Operational state data for STP on each interface"; - - uses stp-interfaces-config; - uses stp-interfaces-state; - } - } - } - } - - grouping bridge-priority-config { - description - "Grouping for bridge priority"; - - leaf bridge-priority { - type oc-stp-types:stp-bridge-priority-type; - description - "The manageable component of the Bridge Identifier"; - reference - "IEEE 802.1D 17.13.7 Bridge Identifier Priority"; - } - } - - grouping stp-common-state { - description - "Grouping for common STP operation data"; - - leaf bridge-address { - type oc-yang:mac-address; - description - "A unique 48-bit Universally Administered MAC Address - assigned to the bridge"; - reference - "IEEE 802.1D 7.12.5 Unique identification of a bridge"; - } - - leaf designated-root-priority { - type oc-stp-types:stp-bridge-priority-type; - description - "The bridge priority of the root of the spanning - tree, as determined by the Spanning Tree Protocol, - as executed by this node"; - reference - "RFC4188 BRIDGE-MIB dot1dStpDesignatedRoot"; - } - - leaf designated-root-address { - type oc-yang:mac-address; - description - "The bridge address of the root of the spanning - tree, as determined by the Spanning Tree Protocol, - as executed by this node"; - reference - "RFC4188 BRIDGE-MIB dot1dStpDesignatedRoot"; - } - - leaf root-port { - type uint16; - description - "The port number of the port which offers the lowest - cost path from this bridge to the root bridge"; - reference - "RFC4188 BRIDGE-MIB dot1dStpRootPort"; - } - - leaf root-cost { - type uint32; - description - "The cost of the path to the root as seen from this bridge"; - reference - "RFC4188 BRIDGE-MIB dot1dStpRootCost"; - } - - leaf hold-time { - type uint8; - description - "This time value determines the interval length - during which no more than two Configuration bridge - PDUs shall be transmitted by this node"; - reference - "RFC4188 BRIDGE-MIB dot1dStpHoldTime"; - } - - leaf topology-changes { - type oc-yang:counter64; - description - "The total number of topology changes detected by - this bridge since the management entity was last - reset or initialized"; - reference - "RFC4188 BRIDGE-MIB dot1dStpTopChanges"; - } - - leaf time-since-topology-change { - type oc-types:timeticks64; - description - "The time (in hundredths of a second) since the - last time a topology change was detected by the - bridge entity - - The value is the timestamp in seconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - reference - "RFC4188 BRIDGE-MIB dot1dStpTimeSinceTopologyChange"; - } - } - - grouping stp-timer-config { - description - "Grouping for common STP parameters"; - - leaf hello-time { - type uint8 { - range 1..10; - } - units "seconds"; - description - "The interval between periodic transmissions of - configuration messages by designated ports"; - reference - "IEEE 802.1D 17.13.6 Bridge Hello Time"; - } - - leaf max-age { - type uint8 { - range 6..40; - } - units "seconds"; - description - "The maximum age of the information transmitted by the - bridge when it is the root bridge"; - reference - "IEEE 802.1D 17.13.8 Bridge Max Age"; - } - - leaf forwarding-delay { - type uint8 { - range 4..30; - } - units "seconds"; - description - "The delay used by STP bridges to transition root and - designated ports to forwarding"; - reference - "IEEE 802.1D 17.13.5 Bridge Forward Delay"; - } - - leaf hold-count { - type uint8 { - range 1..10; - } - default 6; - description - "the maximum number of BPDUs per second that the - switch can send from an interface"; - reference - "IEEE 802.1D 17.13.12 Transmit Hold Count"; - } - } - - grouping stp-rapid-pvst-config { - description - "Configuration parameters relating to rapid PVST"; - - leaf vlan-id { - type oc-vlan-types:vlan-id; - description - "Interface VLAN ID"; - } - } - - grouping stp-rapid-pvst-top { - description - "Top grouping for rapid per vlan spanning tree configuration - and operation data"; - - list vlan { - key "vlan-id"; - description - "List of the vlans"; - - leaf vlan-id { - type leafref { - path "../config/vlan-id"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for each vlan"; - - uses stp-rapid-pvst-config; - uses stp-timer-config; - uses bridge-priority-config; - } - - container state { - config false; - description - "Operational data for each vlan"; - - uses stp-rapid-pvst-config; - uses stp-timer-config; - uses bridge-priority-config; - uses stp-common-state; - } - - uses stp-interfaces-top; - } - } - - grouping mst-instance-config { - description - "Grouping for mstp instance configuration"; - - leaf mst-id { - type uint16 { - range "1..4094"; - } - description - "In an MSTP Bridge, an MSTID, i.e., a value used to identify - a spanning tree (or MST) instance."; - reference - "IEEE8021-TC-MIB IEEE8021MstIdentifier"; - } - - leaf-list vlan { - type union { - type oc-vlan-types:vlan-id; - type oc-vlan-types:vlan-range; - } - description - "list of vlans mapped to the MST instance"; - } - } - - grouping mst-instance-top { - description - "Top level grouping for mstp instances"; - - list mst-instance { - key "mst-id"; - description - "List of the mstp instances"; - - leaf mst-id { - type leafref { - path "../config/mst-id"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for MSTP instance"; - - uses mst-instance-config; - uses bridge-priority-config; - } - - container state { - config false; - - description - "Operational data for MSTP instance"; - - uses mst-instance-config; - uses bridge-priority-config; - uses stp-common-state; - } - - uses stp-interfaces-top; - } - } - - grouping mstp-config { - description - "Grouping for MSTP configuration data"; - - leaf name { - type string { - length "1..32"; - } - description - "The Configuration Name in the MST Configuration Identifier"; - reference - "IEEE 802.1Q 13.8 MST Configuration Identifier (MCID)"; - } - - leaf revision { - type uint32; - description - "The Revision Level in the MST Configuration Identifier"; - reference - "IEEE 802.1Q 13.8 MST Configuration Identifier"; - } - - leaf max-hop { - type uint8 { - range 1..255; - } - description - "The max hop determines the number of bridges in an MST - region that a BPDU can traverse before it is discarded"; - reference - "IEEE 802.1Q 13.26.4 BridgeTimes"; - } - - uses stp-timer-config; - } - - grouping mstp-state { - description - "Operational state data for MSTP"; - } - - grouping stp-mstp-top { - description - "Top grouping for MSTP configuration and operation data"; - - container config { - description - "Configuration data for MSTP"; - - uses mstp-config; - } - - container state { - config false; - - description - "Operational data for MSTP"; - - uses mstp-config; - uses mstp-state; - } - - container mst-instances { - description - "Configuration and operation data for MSTP instances"; - - uses mst-instance-top; - } - } - - grouping stp-rstp-top { - description - "Top grouping for RSTP configuration and operation data"; - - container config { - description - "Configuration data for RSTP"; - - uses stp-timer-config; - uses bridge-priority-config; - } - - container state { - config false; - - description - "Operational state data for RSTP"; - - uses stp-timer-config; - uses bridge-priority-config; - uses stp-common-state; - } - - uses stp-interfaces-top; - } - - grouping stp-interface-common-config { - description - "Configuration data for interface specific STP features"; - - leaf name { - type oc-if:base-interface-ref; - description - "Reference to the STP Ethernet interface"; - } - - leaf edge-port { - type identityref { - base oc-stp-types:STP_EDGE_PORT; - } - description - "Configure the edge port state"; - } - - leaf link-type { - type oc-stp-types:stp-link-type; - description - "specifies the interface's link type"; - } - - leaf guard { - type oc-stp-types:stp-guard-type; - description - "Enable root guard or loop guard"; - } - - uses stp-bpdu-config; - - } - - grouping stp-interface-common-state { - description - "Operational state data for STP on interfaces"; - } - - grouping stp-interface-common-top { - description - "Top-level grouping for interface specific STP features"; - - list interface { - key "name"; - description - "List of interfaces on which STP is enable"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for STP on each bridge port"; - - uses stp-interface-common-config; - } - - container state { - - config false; - - description - "Operational state data for STP on each bridge port"; - - uses stp-interface-common-config; - uses stp-interface-common-state; - } - } - } - - grouping stp-bpdu-config { - description - "Grouping for STP BPDU configuration"; - - leaf bpdu-guard { - type boolean; - description - "Enable edge port BPDU guard"; - } - - leaf bpdu-filter { - type boolean; - description - "Enable edge port BPDU filter"; - } - } - - grouping stp-global-config { - description - "Global spanning tree configuration"; - - leaf-list enabled-protocol { - type identityref { - base oc-stp-types:STP_PROTOCOL; - } - description - "List of the spanning tree protocols enabled on the - device"; - } - - leaf bridge-assurance { - type boolean; - description - "Enable bridge assurance to protect against unidirectional - link failure"; - } - - leaf etherchannel-misconfig-guard { - type boolean; - description - "EtherChannel guard detects a misconfigured EtherChannel - when interfaces on the switch are configured as an - EtherChannel while interfaces on the other device are not - or when not all the interfaces on the other device are in - the same EtherChannel."; - } - - leaf bpduguard-timeout-recovery { - type uint8; - units "seconds"; - description - "Amount of time, in seconds, the interface receiving BPDUs - is disabled. Once the timeout expires, the interface is - brought back into service."; - } - - leaf loop-guard { - type boolean; - description - "The loop guard default setting for the bridge"; - } - - uses stp-bpdu-config; - - } - - grouping stp-global-state { - description - "Global operational state for STP"; - } - - grouping stp-global-base { - description - "Grouping for global spanning tree data"; - - container config { - description - "Global spanning tree configuration"; - uses stp-global-config; - } - - container state { - config false; - - description - "Global spanning tree state"; - uses stp-global-config; - uses stp-global-state; - } - } - - grouping stp-top { - description - "Top-level grouping for spanning-tree model"; - - container stp { - description - "Top-level container for spanning tree configuration and - state data"; - - container global { - description - "Global configuration and state data"; - - uses stp-global-base; - } - - container rstp { - - description - "Rapid Spanning-tree protocol configuration and operation - data"; - - uses stp-rstp-top; - } - - container mstp { - description - "Multi Spanning-tree protocol configuration and operation - data"; - - uses stp-mstp-top; - } - - container rapid-pvst { - description - "Rapid per vlan Spanning-tree protocol configuration and - operational data"; - - uses stp-rapid-pvst-top; - } - - container interfaces { - description - "Enclosing container for the list of interface references"; - - uses stp-interface-common-top; - } - } - } - - // data definition statements - - uses stp-top; - -} diff --git a/src/plugins/yang/openconfig/openconfig-system-logging.yang b/src/plugins/yang/openconfig/openconfig-system-logging.yang deleted file mode 100644 index 14bb1c5..0000000 --- a/src/plugins/yang/openconfig/openconfig-system-logging.yang +++ /dev/null @@ -1,492 +0,0 @@ -module openconfig-system-logging { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/system/logging"; - - prefix "oc-log"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - for common logging facilities on network systems."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2017-09-18" { - description - "Updated to use OpenConfig types modules"; - reference "0.3.0"; - } - - revision "2017-07-06" { - description - "Move to oc-inet types, add IETF attribution, add RADIUS - counters, changed password leaf names to indicate hashed"; - reference "0.2.0"; - } - - revision "2017-01-29" { - description - "Initial public release"; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - identity SYSLOG_FACILITY { - description - "Base identity for Syslog message facilities."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity ALL { - base SYSLOG_FACILITY; - description - "All supported facilities"; - } - - identity KERNEL { - base SYSLOG_FACILITY; - description - "The facility for kernel messages"; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity USER { - base SYSLOG_FACILITY; - description - "The facility for user-level messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity MAIL { - base SYSLOG_FACILITY; - description - "The facility for the mail system."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity SYSTEM_DAEMON { - base SYSLOG_FACILITY; - description - "The facility for the system daemons."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity AUTH { - base SYSLOG_FACILITY; - description - "The facility for security/authorization messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity SYSLOG { - base SYSLOG_FACILITY; - description - "The facility for messages generated internally by syslogd - facility."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity AUTHPRIV { - base SYSLOG_FACILITY; - description - "The facility for privileged security/authorization messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - - identity NTP { - base SYSLOG_FACILITY; - description - "The facility for the NTP subsystem."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity AUDIT { - base SYSLOG_FACILITY; - description - "The facility for log audit messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity CONSOLE { - base SYSLOG_FACILITY; - description - "The facility for log alert messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOCAL0 { - base SYSLOG_FACILITY; - description - "The facility for local use 0 messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOCAL1 { - base SYSLOG_FACILITY; - description - "The facility for local use 1 messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOCAL2 { - base SYSLOG_FACILITY; - description - "The facility for local use 2 messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOCAL3 { - base SYSLOG_FACILITY; - description - "The facility for local use 3 messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOCAL4 { - base SYSLOG_FACILITY; - description - "The facility for local use 4 messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOCAL5 { - base SYSLOG_FACILITY; - description - "The facility for local use 5 messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOCAL6 { - base SYSLOG_FACILITY; - description - "The facility for local use 6 messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOCAL7 { - base SYSLOG_FACILITY; - description - "The facility for local use 7 messages."; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - identity LOG_DESTINATION_TYPE { - description - "Base identity for destination for logging messages"; - } - - identity DEST_CONSOLE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to the console"; - } - - identity DEST_BUFFER { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to and in-memory circular buffer"; - } - - identity DEST_FILE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to a local file"; - } - - identity DEST_REMOTE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to a remote syslog server"; - } - - // typedef statements - - typedef syslog-severity { - type enumeration { - enum EMERGENCY { - description - "Emergency: system is unusable (0)"; - } - enum ALERT { - description - "Alert: action must be taken immediately (1)"; - } - enum CRITICAL { - description - "Critical: critical conditions (2)"; - } - enum ERROR { - description - "Error: error conditions (3)"; - } - enum WARNING { - description - "Warning: warning conditions (4)"; - } - enum NOTICE { - description - "Notice: normal but significant condition(5)"; - } - enum INFORMATIONAL { - description - "Informational: informational messages (6)"; - } - enum DEBUG { - description - "Debug: debug-level messages (7)"; - } - } - description - "Syslog message severities"; - reference - "IETF RFC 5424 - The Syslog Protocol"; - } - - // grouping statements - - grouping logging-selectors-config { - description - "Configuration data for logging selectors"; - - leaf facility { - type identityref { - base SYSLOG_FACILITY; - } - description - "Specifies the facility, or class of messages to log"; - } - - leaf severity { - type syslog-severity; - description - "Specifies that only messages of the given severity (or - greater severity) for the corresonding facility are logged"; - } - } - - grouping logging-selectors-state { - description - "Operational state data for logging selectors"; - } - - grouping logging-selectors-top { - description - "Top-level grouping for the logging selector list"; - - container selectors { - description - "Enclosing container "; - - list selector { - key "facility severity"; - description - "List of selectors for log messages"; - - leaf facility { - type leafref { - path "../config/facility"; - } - description - "Reference to facility list key"; - } - - leaf severity { - type leafref { - path "../config/severity"; - } - description - "Reference to severity list key"; - } - - container config { - description - "Configuration data "; - - uses logging-selectors-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses logging-selectors-config; - uses logging-selectors-state; - } - } - } - } - - grouping logging-console-config { - description - "Configuration data for console logging"; - } - - grouping logging-console-state { - description - "Operational state data for console logging"; - } - - grouping logging-console-top { - description - "Top-level grouping for console logging data"; - - container console { - description - "Top-level container for data related to console-based - logging"; - - container config { - description - "Configuration data for console logging"; - - uses logging-console-config; - } - - container state { - - config false; - - description - "Operational state data for console logging"; - - uses logging-console-config; - uses logging-console-state; - } - - uses logging-selectors-top; - } - } - - grouping logging-remote-config { - description - "Configuration data for remote log servers"; - - leaf host { - type oc-inet:host; - description - "IP address or hostname of the remote log server"; - } - - leaf source-address { - type oc-inet:ip-address; - description - "Source IP address for packets to the log server"; - } - - leaf remote-port { - type oc-inet:port-number; - default 514; - description - "Sets the destination port number for syslog UDP messages to - the server. The default for syslog is 514."; - } - } - - grouping logging-remote-state { - description - "Operational state data for remote log servers"; - } - - grouping logging-remote-top { - description - "Top-level grouping for remote log servers"; - - container remote-servers { - description - "Enclosing container for the list of remote log servers"; - - list remote-server { - key "host"; - description - "List of remote log servers"; - - leaf host { - type leafref { - path "../config/host"; - } - description - "Reference to the host list key"; - } - - container config { - description - "Configuration data for remote log servers"; - - uses logging-remote-config; - } - - container state { - - config false; - - description - "Operational state data for remote log servers"; - - uses logging-remote-config; - uses logging-remote-state; - } - uses logging-selectors-top; - } - } - } - - grouping logging-top { - description - "Top-level grouping for logging data"; - - container logging { - description - "Top-level container for data related to logging / syslog"; - - uses logging-console-top; - uses logging-remote-top; - } - } - // data definition statements - - // augment statements - - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-system-management.yang b/src/plugins/yang/openconfig/openconfig-system-management.yang deleted file mode 100644 index 67f8aab..0000000 --- a/src/plugins/yang/openconfig/openconfig-system-management.yang +++ /dev/null @@ -1,126 +0,0 @@ -module openconfig-system-management { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/system/management"; - - prefix "oc-sys-mgmt"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - related to management services."; - - oc-ext:openconfig-version "0.1.1"; - - revision "2018-08-28" { - description - "Update description of the ANY enum."; - reference "0.1.1"; - } - - revision "2018-07-26" { - description - "Initial public release"; - reference "0.1.0"; - } - - // identity statements - - // typedef statements - - // grouping statements - - grouping system-grpc-server-config { - description - "Configuration data for the gRPC server"; - - leaf enable { - type boolean; - default true; - description - "Enables the gRPC server. The gRPC server is enabled by - default"; - } - - leaf port { - type oc-inet:port-number; - description - "TCP port on which the gRPC server should listen"; - } - - leaf transport-security { - type boolean; - description - "Enables gRPC transport security (e.g., TLS or SSL)"; - } - - leaf certificate-id { - type string; - description - "The certificate ID to be used for authentication"; - } - - leaf-list listen-addresses { - type union { - type oc-inet:ip-address; - type enumeration { - enum ANY { - description - "The gRPC daemon should listen on any address - bound to an interface on the system."; - } - } - } - description - "The IP addresses that the gRPC server should listen - on. This may be an IPv4 or an IPv6 address"; - } - } - - grouping system-grpc-server-top { - description - "Top-level grouping for system gRPC server data"; - - container grpc-server { - description - "Top-level container for the gRPC server"; - - container config { - description - "Configuration data for the system gRPC server"; - - uses system-grpc-server-config; - } - - container state { - config false; - - description - "Operational state data for the system gRPC server"; - - uses system-grpc-server-config; - } - } - } - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-system-terminal.yang b/src/plugins/yang/openconfig/openconfig-system-terminal.yang deleted file mode 100644 index dc44dc5..0000000 --- a/src/plugins/yang/openconfig/openconfig-system-terminal.yang +++ /dev/null @@ -1,239 +0,0 @@ -module openconfig-system-terminal { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/system/terminal"; - - prefix "oc-sys-term"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines configuration and operational state data - related to remote terminal services such as ssh and telnet."; - - oc-ext:openconfig-version "0.3.0"; - - revision "2017-09-18" { - description - "Updated to use OpenConfig types modules"; - reference "0.3.0"; - } - - revision "2017-07-06" { - description - "Move to oc-inet types, add IETF attribution, add RADIUS - counters, changed password leaf names to indicate hashed"; - reference "0.2.0"; - } - - revision "2017-01-29" { - description - "Initial public release"; - reference "0.1.0"; - } - - - // identity statements - - // typedef statements - - // grouping statements - - grouping system-terminal-common-config { - description - "Common configuration data for terminal services"; - - leaf timeout { - type uint16; - units seconds; - description - "Set the idle timeout in seconds on terminal connections to - the system for the protocol."; - } - - leaf rate-limit { - type uint16; - units "conn/min"; - description - "Set a limit on the number of connection attempts per - minute to the system for the protocol."; - } - - leaf session-limit { - type uint16; - description - "Set a limit on the number of simultaneous active terminal - sessions to the system for the protocol (e.g., ssh, - telnet, ...) "; - } - } - - grouping system-terminal-common-state { - description - "Common operational state data for terminal services"; - } - - grouping system-terminal-common-top { - description - "Top-level grouping for common terminal service data"; - - container terminal-servers { - description - "Top-level container for terminal services"; - - container config { - description - "Configuration data for terminal services"; - - uses system-terminal-common-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses system-terminal-common-config; - uses system-terminal-common-state; - } - } - } - - grouping system-ssh-server-config { - description - "Configuration data for system ssh configuration"; - - leaf enable { - type boolean; - default true; - description - "Enables the ssh server. The ssh server is enabled by - default."; - } - - leaf protocol-version { - type enumeration { - enum V2 { - description - "Use SSH v2 only"; - } - enum V1 { - description - "Use SSH v1 only"; - } - enum V1_V2 { - description - "Use either SSH v1 or v2"; - } - } - default V2; - description - "Set the protocol version for SSH connections to the system"; - } - - uses system-terminal-common-config; - } - - grouping system-ssh-server-state { - description - "Operational state data for ssh server"; - } - - grouping system-ssh-server-top { - description - "Top-level grouping for ssh server data"; - - container ssh-server { - description - "Top-level container for ssh server"; - - container config { - description - "Configuration data for the system ssh server"; - - uses system-ssh-server-config; - } - - container state { - - config false; - - description - "Operational state data for the system ssh server"; - - uses system-ssh-server-config; - uses system-ssh-server-state; - } - } - } - - grouping system-telnet-server-config { - description - "Configuration data for telnet server"; - - leaf enable { - type boolean; - default false; - description - "Enables the telnet server. Telnet is disabled by - default"; - } - uses system-terminal-common-config; - - } - - grouping system-telnet-server-state { - description - "Operational state data for telnet server"; - } - - grouping system-telnet-server-top { - description - "Top-level grouping for telnet server "; - - container telnet-server { - description - "Top-level container for telnet terminal servers"; - - container config { - description - "Configuration data for telnet"; - - uses system-telnet-server-config; - } - - container state { - - config false; - - description - "Operational state data for telnet"; - - uses system-telnet-server-config; - uses system-telnet-server-state; - } - } - } - - // data definition statements - - // augment statements - - // rpc statements - - // notification statements - -}
\ No newline at end of file diff --git a/src/plugins/yang/openconfig/openconfig-system.yang b/src/plugins/yang/openconfig/openconfig-system.yang deleted file mode 100644 index f4d4034..0000000 --- a/src/plugins/yang/openconfig/openconfig-system.yang +++ /dev/null @@ -1,978 +0,0 @@ -module openconfig-system { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/system"; - - prefix "oc-sys"; - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-yang-types { prefix oc-yang; } - import openconfig-types { prefix oc-types; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-aaa { prefix oc-aaa; } - import openconfig-system-logging { prefix oc-log; } - import openconfig-system-management { prefix oc-sys-mgmt; } - import openconfig-system-terminal { prefix oc-sys-term; } - import openconfig-procmon { prefix oc-proc; } - import openconfig-alarms { prefix oc-alarms; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "Model for managing system-wide services and functions on - network devices. - - Portions of this code were derived from IETF RFC 7317. - Please reproduce this note if possible. - - IETF code is subject to the following copyright and license: - Copyright (c) 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)."; - - oc-ext:openconfig-version "0.6.0"; - - revision "2018-07-17" { - description - "Add gRPC server data"; - reference "0.6.0"; - } - - revision "2018-01-21" { - description - "Add cpu utilization data"; - reference "0.5.0"; - } - - revision "2017-12-15" { - description - "Add alarms to the system model"; - reference "0.4.0"; - } - - revision "2017-09-18" { - description - "Updated to use OpenConfig types modules"; - reference "0.3.0"; - } - - revision "2017-07-06" { - description - "Move to oc-inet types, add IETF attribution, add RADIUS - counters, changed password leaf names to indicate hashed"; - reference "0.2.0"; - } - - revision "2017-01-29" { - description - "Initial public release"; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - identity NTP_AUTH_TYPE { - description - "Base identity for encryption schemes supported for NTP - authentication keys"; - } - - identity NTP_AUTH_MD5 { - base NTP_AUTH_TYPE; - description - "MD5 encryption method"; - } - - // typedef statements - - typedef timezone-name-type { - type string; - description - "A time zone name as used by the Time Zone Database, - sometimes referred to as the 'Olson Database'. - - The exact set of valid values is an implementation-specific - matter. Client discovery of the exact set of time zone names - for a particular server is out of scope."; - reference - "BCP 175: Procedures for Maintaining the Time Zone Database"; - } - - // grouping statements - - grouping system-clock-config { - description - "Configuration data for system-wide clock configuration"; - - leaf timezone-name { - type timezone-name-type; - description - "The TZ database name to use for the system, such - as 'Europe/Stockholm'."; - reference "IANA Time Zone Database - http://www.iana.org/time-zones"; - } - } - - grouping system-clock-state { - description - "Operational state data for system-wide clock configuration"; - } - - grouping system-clock-top { - description - "Top-level grouping for system-wide clock configuration"; - - container clock { - description - "Top-level container for clock configuration data"; - - container config { - description - "Configuration data for system clock"; - - uses system-clock-config; - } - - container state { - - config false; - - description - "Operational state data for system clock"; - - uses system-clock-config; - uses system-clock-state; - } - } - } - - grouping system-global-config { - description "system-wide configuration parameters"; - - leaf hostname { - type oc-inet:domain-name; - description - "The hostname of the device -- should be a single domain - label, without the domain."; - } - - leaf domain-name { - type oc-inet:domain-name; - description - "Specifies the domain name used to form fully qualified name - for unqualified hostnames."; - } - - leaf login-banner { - type string; - description - "The console login message displayed before the login prompt, - i.e., before a user logs into the system."; - } - - leaf motd-banner { - type string; - description - "The console message displayed after a user logs into the - system. They system may append additional standard - information such as the current system date and time, uptime, - last login timestamp, etc."; - } - } - - grouping system-global-state { - description - "Global operational state data for the system"; - - leaf current-datetime { - type oc-yang:date-and-time; - description - "The current system date and time."; - } - - leaf boot-time { - type oc-types:timeticks64; - description - "This timestamp indicates the time that the system was last - restarted. The value is the timestamp in seconds relative - to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - } - - } - - grouping system-dns-config { - description "DNS / resolver related configuration data"; - - leaf-list search { - type oc-inet:domain-name; - ordered-by user; - description - "An ordered list of domains to search when resolving - a host name."; - } - } - - grouping system-dns-state { - description - "Operational state data for system DNS resolver"; - - } - - grouping system-dns-servers-config { - description - "Configuration data for DNS resolvers"; - - //RFC 7317 includes a single-value choice statement to for - //TCP and UDP transport. This has been removed since it the - //transport protocol is not generally available as an options - //on target devices. It may be added back if and when needed. - - leaf address { - type oc-inet:ip-address; - description - "The address of the DNS server, can be either IPv4 - or IPv6."; - } - - leaf port { - type oc-inet:port-number; - default 53; - description - "The port number of the DNS server."; - } - - //RFC 7317 includes resolver timeout and attempts options. These - //have been omitted as they are not available on many targets. If - //and when they are required, they may be added back in. - } - - grouping system-dns-static-config { - description - "Configuration data for static host entries"; - - leaf hostname { - type string; - description - "Hostname for the static DNS entry"; - } - - leaf-list alias { - type string; - description - "Additional aliases for the hostname"; - } - - leaf-list ipv4-address { - type oc-inet:ipv4-address; - description - "List of IPv4 addressses for the host entry"; - } - - leaf-list ipv6-address { - type oc-inet:ipv6-address; - description - "List of IPv6 addresses for the host entry"; - } - } - - grouping system-dns-static-state { - description - "Operational state data for static host entries"; - } - - grouping system-dns-static-top { - description - "Top-level grouping for static DNS host entries"; - - container host-entries { - description - "Enclosing container for list of static host entries"; - - list host-entry { - key "hostname"; - description - "List of static host entries"; - - leaf hostname { - type leafref { - path "../config/hostname"; - } - description - "Reference to the hostname list key"; - } - - container config { - description - "Configuration data for static host entries"; - - uses system-dns-static-config; - } - - container state { - - config false; - - description - "Operational state data for static host entries"; - - uses system-dns-static-config; - uses system-dns-static-state; - } - } - } - } - - grouping system-dns-servers-state { - description - "Operational state data for DNS resolvers"; - - } - - grouping system-dns-servers-top { - description - "Top-level grouping for the list of DNS resolvers."; - - container servers { - description - "Enclosing container for DNS resolver list"; - - list server { - key "address"; - ordered-by user; - description - "List of the DNS servers that the resolver should query. - - When the resolver is invoked by a calling application, it - sends the query to the first name server in this list. If - no response has been received within 'timeout' seconds, - the resolver continues with the next server in the list. - If no response is received from any server, the resolver - continues with the first server again. When the resolver - has traversed the list 'attempts' times without receiving - any response, it gives up and returns an error to the - calling application. - - Implementations MAY limit the number of entries in this - list."; - - leaf address { - type leafref { - path "../config/address"; - } - description - "References the configured address of the DNS server"; - } - - container config { - description - "Configuration data for each DNS resolver"; - - uses system-dns-servers-config; - } - - container state { - - config false; - - description - "Operational state data for each DNS resolver"; - - uses system-dns-servers-config; - uses system-dns-servers-state; - } - - } - } - } - - grouping system-dns-top { - description - "Top-level grouping for DNS / resolver config and operational - state data"; - - container dns { - description - "Enclosing container for DNS resolver data"; - - container config { - description - "Configuration data for the DNS resolver"; - - uses system-dns-config; - - } - - container state { - - config false; - - description - "Operational state data for the DNS resolver"; - - uses system-dns-config; - uses system-dns-state; - - } - - uses system-dns-servers-top; - uses system-dns-static-top; - } - } - - grouping system-ntp-server-config { - description - "Configuration data for NTP servers"; - - leaf address { - type oc-inet:host; - description - "The address or hostname of the NTP server."; - } - - leaf port { - type oc-inet:port-number; - default 123; - description - "The port number of the NTP server."; - } - - leaf version { - type uint8 { - range 1..4; - } - default 4; - description - "Version number to put in outgoing NTP packets"; - } - - leaf association-type { - type enumeration { - enum SERVER { - description - "Use client association mode. This device - will not provide synchronization to the - configured NTP server."; - } - enum PEER { - description - "Use symmetric active association mode. - This device may provide synchronization - to the configured NTP server."; - } - enum POOL { - description - "Use client association mode with one or - more of the NTP servers found by DNS - resolution of the domain name given by - the 'address' leaf. This device will not - provide synchronization to the servers."; - } - } - default SERVER; - description - "The desired association type for this NTP server."; - } - leaf iburst { - type boolean; - default false; - description - "Indicates whether this server should enable burst - synchronization or not."; - } - leaf prefer { - type boolean; - default false; - description - "Indicates whether this server should be preferred - or not."; - } - } - - grouping system-ntp-server-state { - description - "Operational state data for NTP servers"; - - leaf stratum { - type uint8; - description - "Indicates the level of the server in the NTP hierarchy. As - stratum number increases, the accuracy is degraded. Primary - servers are stratum while a maximum value of 16 indicates - unsynchronized. The values have the following specific - semantics: - - | 0 | unspecified or invalid - | 1 | primary server (e.g., equipped with a GPS receiver) - | 2-15 | secondary server (via NTP) - | 16 | unsynchronized - | 17-255 | reserved"; - reference - "RFC 5905 - Network Time Protocol Version 4: Protocol and - Algorithms Specification"; - } - - leaf root-delay { - type uint32; - // TODO: reconsider units for these values -- the spec defines - // rootdelay and rootdisperson as 2 16-bit integers for seconds - // and fractional seconds, respectively. This gives a - // precision of ~15 us (2^-16). Using milliseconds here based - // on what implementations typically provide and likely lack - // of utility for less than millisecond precision with NTP - // time sync. - units "milliseconds"; - description - "The round-trip delay to the server, in milliseconds."; - reference - "RFC 5905 - Network Time Protocol Version 4: Protocol and - Algorithms Specification"; - } - - leaf root-dispersion { - type uint64; - units "milliseconds"; - description - "Dispersion (epsilon) represents the maximum error inherent - in the measurement"; - reference - "RFC 5905 - Network Time Protocol Version 4: Protocol and - Algorithms Specification"; - } - - leaf offset { - type uint64; - units "milliseconds"; - description - "Estimate of the current time offset from the peer. This is - the time difference between the local and reference clock."; - } - - leaf poll-interval { - type uint32; - units "seconds"; - description - "Polling interval of the peer"; - } - } - - grouping system-ntp-server-top { - description - "Top-level grouping for the list of NTP servers"; - - container servers { - description - "Enclosing container for the list of NTP servers"; - - list server { - key "address"; - description - "List of NTP servers to use for system clock - synchronization. If '/system/ntp/enabled' - is 'true', then the system will attempt to - contact and utilize the specified NTP servers."; - - leaf address { - type leafref { - path "../config/address"; - } - description - "References the configured address or hostname of the - NTP server."; - } - - container config { - description - "Configuration data for an NTP server."; - - uses system-ntp-server-config; - } - - container state { - - config false; - - description - "Operational state data for an NTP server."; - - uses system-ntp-server-config; - uses system-ntp-server-state; - } - - } - } - } - - grouping system-ntp-auth-keys-config { - description - "Configuration data "; - - leaf key-id { - type uint16; - description - "Integer identifier used by the client and server to - designate a secret key. The client and server must use - the same key id."; - } - - leaf key-type { - type identityref { - base NTP_AUTH_TYPE; - } - description - "Encryption type used for the NTP authentication key"; - } - - leaf key-value { - type string; - description - "NTP authentication key value"; - } - } - - grouping system-ntp-auth-keys-state { - description - "Operational state data for NTP auth key data"; - } - - grouping system-ntp-auth-keys-top { - description - "Top-level grouping for NTP auth key data"; - - container ntp-keys { - description - "Enclosing container for list of NTP authentication keys"; - - list ntp-key { - key "key-id"; - description - "List of NTP authentication keys"; - - leaf key-id { - type leafref { - path "../config/key-id"; - } - description - "Reference to auth key-id list key"; - } - - container config { - description - "Configuration data for NTP auth keys"; - - uses system-ntp-auth-keys-config; - } - - container state { - - config false; - - description - "Operational state data for NTP auth keys"; - - uses system-ntp-auth-keys-config; - uses system-ntp-auth-keys-state; - } - } - } - } - - grouping system-ntp-config { - description - "Configuration data for system-wide NTP operation."; - - leaf enabled { - type boolean; - default false; - description - "Enables the NTP protocol and indicates that the system should - attempt to synchronize the system clock with an NTP server - from the servers defined in the 'ntp/server' list."; - } - - leaf ntp-source-address { - type oc-inet:ip-address; - description - "Source address to use on outgoing NTP packets"; - } - - leaf enable-ntp-auth { - type boolean; - default false; - description - "Enable or disable NTP authentication -- when enabled, the - system will only use packets containing a trusted - authentication key to synchronize the time."; - } - } - - grouping system-ntp-state { - description - "Operational state data for system-wide NTP operation."; - - leaf auth-mismatch { - type oc-yang:counter64; - description - "Count of the number of NTP packets received that were not - processed due to authentication mismatch."; - } - } - - grouping system-ntp-top { - description - "Top-level grouping for configuration and state data for NTP"; - - container ntp { - description - "Top-level container for NTP configuration and state"; - - container config { - description - "Configuration data for NTP client."; - - uses system-ntp-config; - } - - container state { - config false; - description - "Operational state data for NTP services."; - - uses system-ntp-config; - uses system-ntp-state; - } - uses system-ntp-auth-keys-top; - uses system-ntp-server-top; - } - } - - grouping system-memory-config { - description - "Configuration data for system memory"; - } - - grouping system-memory-state { - description - "Operational state data for system memory"; - - leaf physical { - type uint64; - units bytes; - // TODO: consider making units in megabytes - description - "Reports the total physical memory available on the - system."; - } - - leaf reserved { - type uint64; - units bytes; - description - "Memory reserved for system use"; - } - } - - grouping system-memory-top { - description - "Top-level grouping for system memory data definitions"; - - container memory { - description - "Top-level container for system memory data"; - - container config { - description - "Configuration data for system memory"; - - uses system-memory-config; - } - - container state { - config false; - description - "Operational state data for system memory"; - - uses system-memory-config; - uses system-memory-state; - } - } - } - - grouping system-cpu-state { - description - "Operational state data for the system CPU(s)"; - - leaf index { - type union { - type enumeration { - enum ALL { - description - "Index value indicating all CPUs in the system"; - } - } - type uint32; - } - description - "The CPU index for each processor core on the system. On a - single-core system, the index should be zero. The ALL - index signifies an aggregation of the CPU utilization - statistics over all cores in the system."; - } - - container total { - description - "Total CPU utilization."; - - uses oc-types:avg-min-max-instant-stats-pct; - } - - container user { - description - "Percentage of CPU time spent running in user space."; - - uses oc-types:avg-min-max-instant-stats-pct; - } - - container kernel { - description - "Percentage of CPU time spent running in kernel space."; - - uses oc-types:avg-min-max-instant-stats-pct; - } - - container nice { - description - "Percentage of CPU time spent running low-priority (niced) - user processes."; - - uses oc-types:avg-min-max-instant-stats-pct; - } - - container idle { - description - "Percentage of CPU time spent idle."; - - uses oc-types:avg-min-max-instant-stats-pct; - } - - container wait { - description - "Percentage of CPU time spent waiting for I/O."; - - uses oc-types:avg-min-max-instant-stats-pct; - } - - container hardware-interrupt { - description - "Percentage of CPU time spent servicing hardware interrupts."; - - uses oc-types:avg-min-max-instant-stats-pct; - } - - container software-interrupt { - description - "Percentage of CPU time spent servicing software interrupts"; - - uses oc-types:avg-min-max-instant-stats-pct; - } - } - - grouping system-cpu-top { - description - "Top-level grouping for system CPU data"; - - container cpus { - config false; - description - "Enclosing container for the list of CPU cores on the - system"; - - list cpu { - key "index"; - description - "List of CPU cores on the system (including logical CPUs - on hyperthreaded systems), keyed by either a numerical - index, or the ALL value for an entry representing the - aggregation across all CPUs."; - - leaf index { - type leafref { - path "../state/index"; - } - description - "Reference to list key"; - } - - container state { - - description - "Operational state data for the system CPU(s)"; - - uses system-cpu-state; - } - } - } - } - - grouping system-top { - description - "Top level system data containers"; - - container system { - description - "Enclosing container for system-related configuration and - operational state data"; - - container config { - description "Global configuration data for the system"; - - uses system-global-config; - - } - - container state { - config false; - description "Global operational state data for the system"; - - uses system-global-config; - uses system-global-state; - } - - uses system-clock-top; - uses system-dns-top; - uses system-ntp-top; - uses oc-sys-mgmt:system-grpc-server-top; - uses oc-sys-term:system-ssh-server-top; - uses oc-sys-term:system-telnet-server-top; - uses oc-log:logging-top; - uses oc-aaa:aaa-top; - uses system-memory-top; - uses system-cpu-top; - uses oc-proc:procmon-processes-top; - uses oc-alarms:alarms-top; - } - } - - // data definition statements - - uses system-top; - -} diff --git a/src/plugins/yang/openconfig/openconfig-telemetry-types.yang b/src/plugins/yang/openconfig/openconfig-telemetry-types.yang deleted file mode 100644 index 375fed1..0000000 --- a/src/plugins/yang/openconfig/openconfig-telemetry-types.yang +++ /dev/null @@ -1,115 +0,0 @@ -module openconfig-telemetry-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/telemetry-types"; - - prefix "oc-telemetry-types"; - - import openconfig-extensions { prefix oc-ext; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines type and identities used by the OpenConfig - telemetry model."; - - oc-ext:openconfig-version "0.4.1"; - - revision "2017-08-24" { - description - "Minor formatting fixes"; - reference "0.4.1"; - } - - revision "2017-02-20" { - description - "Fixes for YANG 1.0 compliance, add types module"; - reference "0.4.0"; - } - - revision "2016-04-05" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - - - // identity statements - - identity DATA_ENCODING_METHOD { - description - "Base identity for supported encoding for configuration and - operational state data"; - } - - identity ENC_XML { - base DATA_ENCODING_METHOD; - description - "XML encoding"; - } - - identity ENC_JSON_IETF { - base DATA_ENCODING_METHOD; - description - "JSON encoded based on IETF draft standard"; - reference - "draft-ietf-netmod-yang-json"; - } - - identity ENC_PROTO3 { - base DATA_ENCODING_METHOD; - description - "Protocol buffers v3"; - reference - "https://developers.google.com/protocol-buffers/docs/overview"; - } - - identity STREAM_PROTOCOL { - description "Base identity for a telemetry stream protocol"; - } - - identity STREAM_SSH { - base "STREAM_PROTOCOL"; - description - "Telemetry stream is carried over a SSH connection"; - } - - identity STREAM_GRPC { - base "STREAM_PROTOCOL"; - description - "Telemetry stream is carried over via the gRPC framework"; - } - - identity STREAM_JSON_RPC { - base "STREAM_PROTOCOL"; - description - "Telemetry stream is carried via the JSON-RPC framework"; - } - - identity STREAM_THRIFT_RPC { - base "STREAM_PROTOCOL"; - description - "Telemetry stream is carried via the Apache Thrift framework"; - } - - identity STREAM_WEBSOCKET_RPC { - base "STREAM_PROTOCOL"; - description - "Telemetry stream is carried by the WebSocket framework"; - } - - - // typedef statements - - - -} diff --git a/src/plugins/yang/openconfig/openconfig-telemetry.yang b/src/plugins/yang/openconfig/openconfig-telemetry.yang deleted file mode 100644 index de26ec3..0000000 --- a/src/plugins/yang/openconfig/openconfig-telemetry.yang +++ /dev/null @@ -1,771 +0,0 @@ -module openconfig-telemetry { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/telemetry"; - - prefix "oc-telemetry"; - - // import some basic types - import openconfig-inet-types { prefix oc-inet; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-telemetry-types { prefix oc-telemetry-types; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group www.openconfig.net"; - - description - "Data model which creates the configuration for the telemetry - systems and functions on the device."; - - oc-ext:openconfig-version "0.5.0"; - - revision "2018-08-17" { - description - "Update telemetry model to comply with the OpenConfig - style for lists and their containers. Remove subscription - exclusions."; - reference "0.5.0"; - } - - revision "2017-08-24" { - description - "Minor formatting fixes"; - reference "0.4.1"; - } - - revision "2017-02-20" { - description - "Fixes for YANG 1.0 compliance, add types module"; - reference "0.4.0"; - } - - revision "2016-04-05" { - description - "OpenConfig public release"; - reference "0.2.0"; - } - - grouping telemetry-top { - description - "Top level grouping for telemetry configuration and operational - state data"; - - container telemetry-system { - description - "Top level configuration and state for the - device's telemetry system."; - - container sensor-groups { - description - "Top level container for sensor-groups."; - - list sensor-group { - key "sensor-group-id"; - description - "List of telemetry sensory groups on the local - system, where a sensor grouping represents a resuable - grouping of multiple paths and exclude filters."; - - leaf sensor-group-id { - type leafref { - path "../config/sensor-group-id"; - } - description - "Reference to the name or identifier of the - sensor grouping"; - } - - container config { - description - "Configuration parameters relating to the - telemetry sensor grouping"; - uses telemetry-sensor-group-config; - } - - container state { - config false; - description - "State information relating to the telemetry - sensor group"; - uses telemetry-sensor-group-config; - } - - container sensor-paths { - description - "Top level container to hold a set of sensor - paths grouped together"; - - list sensor-path { - key "path"; - description - "List of paths in the model which together - comprise a sensor grouping. Filters for each path - to exclude items are also provided."; - - leaf path { - type leafref { - path "../config/path"; - } - description - "Reference to the path of interest"; - } - - container config { - description - "Configuration parameters to configure a set - of data model paths as a sensor grouping"; - uses telemetry-sensor-path-config; - } - - container state { - config false; - description - "Configuration parameters to configure a set - of data model paths as a sensor grouping"; - uses telemetry-sensor-path-config; - } - } - } - } - } - - container destination-groups { - description - "Top level container for destination group configuration - and state."; - - list destination-group { - key "group-id"; - description - "List of destination-groups. Destination groups allow the - reuse of common telemetry destinations across the - telemetry configuration. An operator references a - set of destinations via the configurable - destination-group-identifier. - - A destination group may contain one or more telemetry - destinations"; - - leaf group-id { - type leafref { - path "../config/group-id"; - } - description - "Unique identifier for the destination group"; - } - - container config { - description - "Top level config container for destination groups"; - leaf group-id { - type string; - description - "Unique identifier for the destination group"; - } - } - - container state { - config false; - description - "Top level state container for destination groups"; - - leaf group-id { - type string; - description - "Unique identifier for destination group"; - } - } - - container destinations { - description - "The destination container lists the destination - information such as IP address and port of the - telemetry messages from the network element."; - list destination { - key "destination-address destination-port"; - description - "List of telemetry stream destinations"; - - leaf destination-address { - type leafref { - path "../config/destination-address"; - } - description - "Reference to the destination address of the - telemetry stream"; - } - - leaf destination-port { - type leafref { - path "../config/destination-port"; - } - description - "Reference to the port number of the stream - destination"; - } - - container config { - description - "Configuration parameters relating to - telemetry destinations"; - uses telemetry-stream-destination-config; - } - - container state { - config false; - description - "State information associated with - telemetry destinations"; - uses telemetry-stream-destination-config; - } - } - } - } - } - - container subscriptions { - description - "This container holds information for both persistent - and dynamic telemetry subscriptions."; - - container persistent-subscriptions { - description - "This container holds information relating to persistent - telemetry subscriptions. A persistent telemetry - subscription is configued locally on the device through - configuration, and is persistent across device restarts or - other redundancy changes."; - - list persistent-subscription { - key "name"; - - description - "List of telemetry subscriptions. A telemetry - subscription consists of a set of collection - destinations, stream attributes, and associated paths to - state information in the model (sensor data)"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the identifier of the subscription - itself. The id will be the handle to refer to the - subscription once created"; - } - - container config { - description - "Config parameters relating to the telemetry - subscriptions on the local device"; - - uses telemetry-subscription-name-config; - uses telemetry-local-source-address-config; - uses telemetry-qos-marking-config; - uses telemetry-stream-protocol-config; - uses telemetry-stream-encoding-config; - } - - container state { - config false; - description - "State parameters relating to the telemetry - subscriptions on the local device"; - - uses telemetry-subscription-name-config; - uses telemetry-subscription-config; - uses telemetry-subscription-state; - uses telemetry-local-source-address-config; - uses telemetry-qos-marking-config; - uses telemetry-stream-protocol-config; - uses telemetry-stream-encoding-config; - } - - container sensor-profiles { - description - "A sensor profile is a set of sensor groups or - individual sensor paths which are associated with a - telemetry subscription. This is the source of the - telemetry data for the subscription to send to the - defined collectors."; - list sensor-profile { - key "sensor-group"; - description - "List of telemetry sensor groups used - in the subscription"; - - leaf sensor-group { - type leafref { - path "../config/sensor-group"; - } - description - "Reference to the telemetry sensor group name"; - } - - container config { - description - "Configuration parameters related to the sensor - profile for a subscription"; - uses telemetry-sensor-profile-config; - } - - container state { - config false; - description - "State information relating to the sensor profile - for a subscription"; - uses telemetry-sensor-profile-config; - } - } - } - - container destination-groups { - description - "A subscription may specify destination addresses. - If the subscription supplies destination addresses, - the network element will be the initiator of the - telemetry streaming, sending it to the destination(s) - specified. - - If the destination set is omitted, the subscription - preconfigures certain elements such as paths and - sample intervals under a specified subscription ID. - In this case, the network element will NOT initiate an - outbound connection for telemetry, but will wait for - an inbound connection from a network management - system. - - It is expected that the network management system - connecting to the network element will reference - the preconfigured subscription ID when initiating - a subscription."; - - list destination-group { - key "group-id"; - description - "Identifier of the previously defined destination - group"; - - leaf group-id { - type leafref { - path "../config/group-id"; - } - description - "The destination group id references a configured - group of destinations for the telemetry stream."; - } - - container config { - description - "Configuration parameters related to telemetry - destinations."; - - leaf group-id { - type leafref { - path "../../../../../../../destination-groups" - + "/destination-group/group-id"; - } - description - "The destination group id references a reusable - group of destination addresses and ports for - the telemetry stream."; - } - } - - container state { - config false; - description - "State information related to telemetry - destinations"; - - leaf group-id { - type leafref { - path "../../../../../../../destination-groups" - + "/destination-group/group-id"; - } - description - "The destination group id references a reusable - group of destination addresses and ports for - the telemetry stream."; - } - } - } - } - } - } - - container dynamic-subscriptions { - description - "This container holds information relating to dynamic - telemetry subscriptions. A dynamic subscription is - typically configured through an RPC channel, and does not - persist across device restarts, or if the RPC channel is - reset or otherwise torn down."; - - - list dynamic-subscription { - key "id"; - - config false; - description - "List representation of telemetry subscriptions that - are configured via an inline RPC, otherwise known - as dynamic telemetry subscriptions."; - - leaf id { - type leafref { - path "../state/id"; - } - - description - "Reference to the identifier of the subscription - itself. The id will be the handle to refer to the - subscription once created"; - } - - container state { - config false; - description - "State information relating to dynamic telemetry - subscriptions."; - - uses telemetry-subscription-config; - uses telemetry-stream-destination-config; - uses telemetry-stream-frequency-config; - uses telemetry-heartbeat-config; - uses telemetry-suppress-redundant-config; - uses telemetry-qos-marking-config; - uses telemetry-stream-protocol-config; - uses telemetry-stream-encoding-config; - } - - container sensor-paths { - description - "Top level container to hold a set of sensor - paths grouped together"; - - list sensor-path { - key "path"; - description - "List of paths in the model which together - comprise a sensor grouping. Filters for each path - to exclude items are also provided."; - - leaf path { - type leafref { - path "../state/path"; - } - description - "Reference to the path of interest"; - } - - container state { - config false; - description - "State information for a dynamic subscription's - paths of interest"; - uses telemetry-sensor-path-config; - } - } - } - } - } - } - } - } - - // identity statements - - // typedef statements - - // grouping statements - - grouping telemetry-sensor-path-config { - description - "Configuration parameters relating to the - grouping of data model paths comprising a - sensor grouping"; - leaf path { - type string; - description - "Path to a section of operational state of interest - (the sensor)."; - } - - leaf exclude-filter { - type string; - description - "Filter to exclude certain values out of the state - values"; - //May not be necessary. Could remove. - } - } - - grouping telemetry-heartbeat-config { - description - "Configuration parameters relating to the - heartbeat of the telemetry subscription"; - leaf heartbeat-interval { - type uint64; - description - "Maximum time interval in seconds that may pass - between updates from a device to a telemetry collector. - If this interval expires, but there is no updated data to - send (such as if suppress_updates has been configured), the - device must send a telemetry message to the collector."; - } - } - - grouping telemetry-suppress-redundant-config { - description - "Configuration parameters relating to suppression of - redundant upstream updates"; - leaf suppress-redundant { - type boolean; - description - "Boolean flag to control suppression of redundant - telemetry updates to the collector platform. If this flag is - set to TRUE, then the collector will only send an update at - the configured interval if a subscribed data value has - changed. Otherwise, the device will not send an update to - the collector until expiration of the heartbeat interval."; - } - } - - grouping telemetry-sensor-profile-config { - description - "Configuration parameters relating to the sensor groups - used in the sensor profile"; - leaf sensor-group { - type leafref { - path "../../../../../../../sensor-groups/sensor-group" - + "/config/sensor-group-id"; - } - description - "Reference to the sensor group which is used in the profile"; - } - uses telemetry-stream-subscription-config; - } - - grouping telemetry-stream-subscription-config { - description - "Configuration used when the sensor is a stream based sensor."; - - uses telemetry-stream-frequency-config; - uses telemetry-heartbeat-config; - uses telemetry-suppress-redundant-config; - - } - - grouping telemetry-qos-marking-config { - description - "Config parameters relating to the quality of service - marking on device generated telemetry packets"; - - leaf originated-qos-marking { - type oc-inet:dscp; - description - "DSCP marking of packets generated by the telemetry - subsystem on the network device."; - } - } - - - grouping telemetry-sensor-group-config { - description - "Config parameters related to the sensor groups - on the device"; - leaf sensor-group-id { - type string; - description - "Name or identifier for the sensor group itself. - Will be referenced by other configuration specifying a - sensor group"; - } - } - - grouping telemetry-subscription-config { - description - "Configuration parameters relating to the telemetry - subscription"; - - leaf id { - type uint64; - description - "System generated identifer of the telemetry - subscription."; - } - } - - grouping telemetry-subscription-name-config { - description - "Configuration parameters relating to the configured - name of the telemetry subscription. The name is a user - configured string value which uniquely identifies the - subscription in the configuration database."; - - leaf name { - type string; - description - "User configured identifier of the telemetry - subscription. This value is used primarily for - subscriptions configured locally on the network - element."; - } - } - - grouping telemetry-subscription-state { - description - "State values for the telemetry subscription"; - //TODO add values - } - - grouping telemetry-stream-protocol-config { - description - "Configuration parameters relating to the - transport protocol carrying telemetry - data."; - - leaf protocol { - type identityref { - base oc-telemetry-types:STREAM_PROTOCOL; - } - description - "Selection of the transport protocol for the telemetry - stream."; - } - } - - grouping telemetry-stream-encoding-config { - description - "Configuration parameters relating to the - encoding of telemetry data to and from the - network element. The encoding method controls - specifically the wire format of the telemetry - data, and also controls which RPC framework - may be in use to exchange telemetry data."; - - leaf encoding { - type identityref { - base oc-telemetry-types:DATA_ENCODING_METHOD; - } - description - "Selection of the specific encoding or RPC framework - for telemetry messages to and from the network element."; - } - } - - grouping telemetry-stream-destination-config { - description - "Configuration parameters for the stream destinations"; - leaf destination-address { - type oc-inet:ip-address; - description - "IP address of the telemetry stream destination"; - } - leaf destination-port { - type uint16; - description - "Protocol (udp or tcp) port number for the telemetry - stream destination"; - } - } - - grouping telemetry-stream-frequency-config { - description - "Config parameters for the frequency of updates to - the collector"; - leaf sample-interval { - type uint64; - description - "Time in milliseconds between the device's sample of a - telemetry data source. For example, setting this to 100 - would require the local device to collect the telemetry - data every 100 milliseconds. There can be latency or jitter - in transmitting the data, but the sample must occur at - the specified interval. - - The timestamp must reflect the actual time when the data - was sampled, not simply the previous sample timestamp + - sample-interval. - - If sample-interval is set to 0, the telemetry sensor - becomes event based. The sensor must then emit data upon - every change of the underlying data source."; - } - } - - grouping telemetry-sensor-specification { - description - "Config related to creating telemetry sensor groups. A sensor - group is a related set of sensor paths and/or filters to - exclude items. A group is assigned a reusable identifer, so - it can be used in multiple telemetry subscriptions."; - list telemetry-sensor-group { - key "telemetry-sensor-group-id"; - description - "List of telemetry sensor groups"; - - leaf telemetry-sensor-group-id { - type string; - description - "The sensor group identifer is a reusable handle which - identifies a single sensor group. It is referenced from - the subscription configuration."; - } - uses telemetry-sensor-paths; - } - } - - grouping telemetry-sensor-paths { - description - "This grouping contains these paths to leaves or containers - in the data model which are the sources of telemetry - information."; - - list telemetry-sensor-paths { - key "telemetry-sensor-path"; - description - "A list of sensor paths and exclude filters which comprise - a sensor grouping"; - - leaf telemetry-sensor-path { - type string; - description - "The sensor path is a path to a portion of operational - state of interest in the data model"; - } - } - } - - - grouping telemetry-local-source-address-config { - description - "Config relating to the local source address for telemetry - messages"; - // TODO: Make this a reference to an interface. - leaf local-source-address { - type oc-inet:ip-address; - description - "The IP address which will be the source of packets from - the device to a telemetry collector destination."; - } - } - - // data definition statements - - uses telemetry-top; - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-terminal-device.yang b/src/plugins/yang/openconfig/openconfig-terminal-device.yang deleted file mode 100644 index 27de12d..0000000 --- a/src/plugins/yang/openconfig/openconfig-terminal-device.yang +++ /dev/null @@ -1,1370 +0,0 @@ -module openconfig-terminal-device { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/terminal-device"; - - prefix "oc-opt-term"; - - import openconfig-types { prefix oc-types; } - import openconfig-transport-types { prefix oc-opt-types; } - import openconfig-if-ethernet { prefix oc-eth; } - import openconfig-platform { prefix oc-platform; } - import openconfig-platform-transceiver { prefix oc-transceiver; } - import openconfig-lldp { prefix oc-lldp; } - import openconfig-extensions { prefix oc-ext; } - import ietf-yang-types { prefix yang; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-yang-types { prefix oc-yang; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module describes a terminal optics device model for - managing the terminal systems (client and line side) in a - DWDM transport network. - - Elements of the model: - - physical port: corresponds to a physical, pluggable client - port on the terminal device. Examples includes 10G, 40G, 100G - (e.g., 10x10G, 4x25G or 1x100G) and 400G/1T in the future. - Physical client ports will have associated operational state or - PMs. - - physical channel: a physical lane or channel in the - physical client port. Each physical client port has 1 or more - channels. An example is 100GBASE-LR4 client physical port having - 4x25G channels. Channels have their own optical PMs and can be - monitored independently within a client physical port (e.g., - channel power). Physical client channels are defined in the - model as part of a physical client port, and are modeled - primarily for reading their PMs. - - logical channel: a logical grouping of logical grooming elements - that may be assigned to subsequent grooming stages for - multiplexing / de-multiplexing, or to an optical channel for - line side transmission. The logical channels can represent, for - example, an ODU/OTU logical packing of the client - data onto the line side. Tributaries are similarly logical - groupings of demand that can be represented in this structure and - assigned to an optical channel. Note that different types of - logical channels may be present, each with their corresponding - PMs. - - optical channel: corresponds to an optical carrier and is - assigned a wavelength/frequency. Optical channels have PMs - such as power, BER, and operational mode. - - Directionality: - - To maintain simplicity in the model, the configuration is - described from client-to-line direction. The assumption is that - equivalent reverse configuration is implicit, resulting in - the same line-to-client configuration. - - Physical layout: - - The model does not assume a particular physical layout of client - and line ports on the terminal device (e.g., such as number of - ports per linecard, separate linecards for client and line ports, - etc.)."; - - oc-ext:openconfig-version "1.4.0"; - - revision "2018-08-28" { - description - "Adds terminal device related Ethernet counters"; - reference "1.4.0"; - } - - revision "2018-07-30" { - description - "Adds lldp snooping config leaf and augmented it to oc-lldp"; - reference "1.3.0"; - } - - revision "2018-07-26" { - description - "Adds OTN protocol counter stats of errored-blocks and - fec-uncorrectable-blocks, adds ethernet-config-ext grouping - and uses it to augment oc-eth"; - reference "1.2.0"; - } - - revision "2018-07-17" { - description - "Adds testing enum to link-state"; - reference "1.1.0"; - } - - revision "2017-07-08" { - description - "Adds test-signal"; - reference "1.0.0"; - } - - revision "2016-12-22" { - description - "Fixes and additions to terminal optics model"; - reference "0.4.0"; - } - - - grouping terminal-input-optical-power { - description - "Reusable leaves related to input optical power"; - - leaf input-power { - type decimal64 { - fraction-digits 2; - } - units dBm; - description - "The input optical power of this port in units of 0.01dBm. - If the port is an aggregate of multiple physical channels, - this attribute is the total power or sum of all channels."; - } - } - - grouping terminal-ethernet-protocol-config { - description - "Configuration data for logical channels with Ethernet - framing"; - - //TODO:currently a empty container - } - - grouping terminal-ethernet-protocol-state { - description - "Ethernet-specific counters when logical channel - is using Ethernet protocol framing, e.g., 10GE, 100GE"; - - uses oc-eth:ethernet-interface-state-counters; - uses terminal-ethernet-protocol-state-counters; - } - - grouping terminal-ethernet-protocol-state-counters { - description - "Ethernet-specific counters for terminal devices when - logical channel is using Ethernet protocol framing, - e.g., 10GE, 100GE"; - - // ingress counters - - leaf in-pcs-bip-errors { - type oc-yang:counter64; - description - "The number of received bit interleaved parity (BIP) errors - at the physical coding sublayer (PCS). If the interface - consists of multiple lanes, this will be the sum of all - errors on the lane"; - } - - leaf in-pcs-errored-seconds { - type oc-yang:counter64; - description - "The number of seconds that physical coding sublayer (PCS) - errors have crossed a sytem defined threshold indicating the - link is erroring"; - } - - leaf in-pcs-severely-errored-seconds { - type oc-yang:counter64; - description - "The number of seconds that physical coding sublayer (PCS) - errors have crossed a system defined threshold indicating the - link is severely erroring"; - } - - leaf in-pcs-unavailable-seconds { - type oc-yang:counter64; - description - "The number of seconds that physical coding sublayer (PCS) - errors have crossed a system defined threshold indicating the - link is unavailable"; - } - - // egress counters - - leaf out-pcs-bip-errors { - type oc-yang:counter64; - description - "The number of transmitted bit interleaved parity (BIP) errors - at the physical coding sublayer (PCS). If the interface - consists of multiple lanes, this will be the sum of all - errors on the lane"; - } - - leaf out-crc-errors { - type oc-yang:counter64; - description - "Number of FCS/CRC error check failures sent on the interface"; - } - - leaf out-block-errors { - type oc-yang:counter64; - description - "The number of transmitted errored blocks. Error detection - codes are capable of detecting whether one or more errors have - occurred in a given sequence of bits - the block. It is - normally not possible to determine the exact number of errored - bits within the block"; - } - } - - grouping terminal-ethernet-protocol-top { - description - "Top-level grouping for data related to Ethernet protocol - framing on logical channels"; - - container ethernet { - description - "Top level container for data related to Ethernet framing - for the logical channel"; - - container config { - description - "Configuration data for Ethernet protocol framing on - logical channels"; - - uses terminal-ethernet-protocol-config; - } - - container state { - config false; - description - "Operational state data for Ethernet protocol framing - on logical channels"; - - uses terminal-ethernet-protocol-state; - } - } - } - - grouping terminal-otn-protocol-config { - description - "OTU configuration when logical channel - framing is using an OTU protocol, e.g., OTU1, OTU3, etc."; - - leaf tti-msg-transmit { - type string; - description - "Trail trace identifier (TTI) message transmitted"; - } - - leaf tti-msg-expected { - type string; - description - "Trail trace identifier (TTI) message expected"; - } - - leaf tti-msg-auto { - type boolean; - description - "Trail trace identifier (TTI) transmit message automatically - created. If true, then setting a custom transmit message - would be invalid."; - } - } - - grouping terminal-otn-protocol-counter-stats { - description - "Counter based statistics containers for logical channels - using OTN framing"; - - leaf errored-seconds { - type yang:counter64; - description - "The number of seconds that at least one errored blocks - occurs, at least one code violation occurs, loss of sync is - detected or loss of signal is detected"; - } - - leaf severely-errored-seconds { - type yang:counter64; - description - "The number of seconds that loss of frame is detected OR - the number of errored blocks, code violations, loss of sync - or loss of signal is detected exceeds a predefined - threshold"; - } - - leaf unavailable-seconds { - type yang:counter64; - description - "The number of seconds during which the link is unavailable"; - } - - leaf code-violations { - type yang:counter64; - description - "For ethernet or fiberchannel links, the number of 8b/10b - coding violations. For SONET/SDH, the number of BIP (bit - interleaved parity) errors"; - } - - leaf errored-blocks { - type yang:counter64; - description - "The number of errored blocks. Error detection codes are - capable to detect whether one or more errors have occurred - in a given sequence of bits - the block. It is normally not - possible to determine the exact number of errored bits within - the block."; - reference "ITU-T Rec. G.826"; - } - - leaf fec-uncorrectable-blocks { - type yang:counter64; - description - "The number of blocks that were uncorrectable by the FEC"; - } - - leaf fec-uncorrectable-words { - type yang:counter64; - description - "The number of words that were uncorrectable by the FEC"; - } - - leaf fec-corrected-bytes { - type yang:counter64; - description - "The number of bytes that were corrected by the FEC"; - } - - leaf fec-corrected-bits { - type yang:counter64; - description - "The number of bits that were corrected by the FEC"; - } - - leaf background-block-errors { - type yang:counter64; - description - "The number of background block errors"; - } - } - - grouping terminal-otn-protocol-multi-stats { - description - "Multi-value statistics containers for logical channels using - OTN framing (e.g., max, min, avg, instant)"; - - container pre-fec-ber { - description - "Bit error rate before forward error correction -- computed - value with 18 decimal precision. Note that decimal64 - supports values as small as i x 10^-18 where i is an - integer. Values smaller than this should be reported as 0 - to inidicate error free or near error free performance. - Values include the instantaneous, average, minimum, and - maximum statistics. If avg/min/max statistics are not - supported, the target is expected to just supply the - instant value"; - - uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; - } - - container post-fec-ber { - description - "Bit error rate after forward error correction -- computed - value with 18 decimal precision. Note that decimal64 - supports values as small as i x 10^-18 where i is an - integer. Values smaller than this should be reported as 0 - to inidicate error free or near error free performance. - Values include the instantaneous, average, minimum, and - maximum statistics. If avg/min/max statistics are not - supported, the target is expected to just supply the - instant value"; - - uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; - } - - container q-value { - description - "Quality value (factor) in dB of a channel with two - decimal precision. Values include the instantaneous, - average, minimum, and maximum statistics. If avg/min/max - statistics are not supported, the target is expected - to just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dB; - } - - container esnr { - description - "Electrical signal to noise ratio. Baud rate - normalized signal to noise ratio based on - error vector magnitude in dB with two decimal - precision. Values include the instantaneous, average, - minimum, and maximum statistics. If avg/min/max - statistics are not supported, the target is expected - to just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dB; - } - } - - grouping terminal-otn-protocol-state { - description - "OTU operational state when logical channel - framing is using an OTU protocol, e.g., OTU1, OTU3, etc."; - - - leaf tti-msg-recv { - type string; - description - "Trail trace identifier (TTI) message received"; - } - - leaf rdi-msg { - type string; - description - "Remote defect indication (RDI) message received"; - } - uses terminal-otn-protocol-counter-stats; - uses terminal-otn-protocol-multi-stats; - } - - grouping terminal-otn-protocol-top { - description - "Top-level grouping for data related to OTN protocol framing"; - - container otn { - description - "Top level container for OTU configuration when logical - channel framing is using an OTU protocol, e.g., OTU1, OTU3, - etc."; - - container config { - description - "Configuration data for OTN protocol framing"; - - uses terminal-otn-protocol-config; - } - - container state { - - config false; - - description - "Operational state data for OTN protocol PMs, statistics, - etc."; - - uses terminal-otn-protocol-config; - uses terminal-otn-protocol-state; - } - } - } - - grouping terminal-client-port-assignment-config { - description - "Configuration data for assigning physical client ports to - logical channels"; - - leaf index { - type uint32; - description - "Index of the client port assignment"; - } - - leaf description { - type string; - description - "Descriptive name for the client port-to-logical channel - mapping"; - } - - leaf logical-channel { - type leafref { - path "/oc-opt-term:terminal-device/oc-opt-term:logical-channels" + - "/oc-opt-term:channel/oc-opt-term:index"; - } - description - "Reference to the logical channel for this - assignment"; - } - - leaf allocation { - type decimal64 { - fraction-digits 3; - } - units Gbps; - description - "Allocation of the client physical port to the assigned - logical channel expressed in Gbps. In most cases, - the full client physical port rate is assigned to a single - logical channel."; - } - - } - - grouping terminal-client-port-assignment-state { - description - "Operational state data for assigning physical client ports - to logical channels"; - } - - grouping terminal-client-port-assignment-top { - description - "Top-level grouping for the assigment of client physical ports - to logical channels"; - //TODO: this grouping could be removed, instead reusing a common - //grouping for logical client assignment pointers - - container logical-channel-assignments { - description - "Enclosing container for client port to logical client - mappings"; - - list assignment { - key "index"; - description - "List of assignments to logical clients"; - - leaf index { - type leafref { - path "../config/index"; - } - description - "Reference to the index of this logical client - assignment"; - } - - container config { - description - "Configuration data for the logical client assignment"; - - uses terminal-client-port-assignment-config; - } - - container state { - - config false; - - description - "Operational state data for the logical client - assignment"; - - uses terminal-client-port-assignment-config; - uses terminal-client-port-assignment-state; - } - } - } - } - - - grouping terminal-logical-chan-assignment-config { - description - "Configuration data for assigning client logical channels - to line-side tributaries"; - - leaf index { - type uint32; - description - "Index of the current logical client channel to tributary - mapping"; - } - - leaf description { - type string; - description - "Name assigned to the logical client channel"; - } - - leaf assignment-type { - type enumeration { - enum LOGICAL_CHANNEL { - description - "Subsequent channel is a logical channel"; - } - enum OPTICAL_CHANNEL { - description - "Subsequent channel is a optical channel / carrier"; - } - } - description - "Each logical channel element may be assigned to subsequent - stages of logical elements to implement further grooming, or - can be assigned to a line-side optical channel for - transmission. Each assignment also has an associated - bandwidth allocation."; - } - - leaf logical-channel { - type leafref { - path "/oc-opt-term:terminal-device/" + - "oc-opt-term:logical-channels/oc-opt-term:channel/" + - "oc-opt-term:index"; - } - must "../assignment-type = 'LOGICAL_CHANNEL'" { - description - "The assignment-type must be set to LOGICAL_CHANNEL for - this leaf to be valid"; - } - description - "Reference to another stage of logical channel elements."; - } - - leaf optical-channel { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - must "../assignment-type = 'OPTICAL_CHANNEL'" { - description - "The assignment-type must be set to OPTICAL_CHANNEL for - this leaf to be valid"; - } - description - "Reference to the line-side optical channel that should - carry the current logical channel element. Use this - reference to exit the logical element stage."; - } - - leaf allocation { - type decimal64 { - fraction-digits 3; - } - units Gbps; - description - "Allocation of the logical client channel to the tributary - or sub-channel, expressed in Gbps"; - } - - } - - grouping terminal-logical-chan-assignment-state { - description - "Operational state data for the assignment of logical client - channel to line-side tributary"; - } - - grouping terminal-logical-chan-assignment-top { - description - "Top-level grouping for the list of logical client channel-to- - tributary assignments"; - - container logical-channel-assignments { - //TODO: we need a commonly understood name for this logical - //channel structure - description - "Enclosing container for tributary assignments"; - - list assignment { - key "index"; - description - "Logical channel elements may be assigned directly to - optical channels for line-side transmission, or can be - further groomed into additional stages of logical channel - elements. The grooming can multiplex (i.e., split the - current element into multiple elements in the subsequent - stage) or de-multiplex (i.e., combine the current element - with other elements into the same element in the subsequent - stage) logical elements in each stage. - - Note that to support the ability to groom the logical - elements, the list of logical channel elements should be - populated with an entry for the logical elements at - each stage, starting with the initial assignment from the - respective client physical port. - - Each logical element assignment consists of a pointer to - an element in the next stage, or to an optical channel, - along with a bandwidth allocation for the corresponding - assignment (e.g., to split or combine signal)."; - - leaf index { - type leafref { - path "../config/index"; - } - description - "Reference to the index for the current tributary - assignment"; - } - - container config { - description - "Configuration data for tributary assignments"; - - uses terminal-logical-chan-assignment-config; - } - - container state { - - config false; - - description - "Operational state data for tributary assignments"; - - uses terminal-logical-chan-assignment-config; - uses terminal-logical-chan-assignment-state; - } - } - } - } - - grouping terminal-logical-channel-ingress-config { - description - "Configuration data for ingress signal to logical channel"; - - leaf transceiver { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to the transceiver carrying the input signal - for the logical channel. If specific physical channels - are mapped to the logical channel (as opposed to all - physical channels carried by the transceiver), they can be - specified in the list of physical channel references."; - } - - leaf-list physical-channel { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-transceiver:transceiver/" + - "oc-transceiver:physical-channels/" + - "oc-transceiver:channel/oc-transceiver:index"; - } - description - "This list should be populated with references - to the client physical channels that feed this logical - channel from the transceiver specified in the 'transceiver' - leaf, which must be specified. If this leaf-list is empty, - all physical channels in the transceiver are assumed to be - mapped to the logical channel."; - } - } - - grouping terminal-logical-channel-ingress-state { - description - "Operational state data for ingress signal to logical channel"; - } - - grouping terminal-logical-channel-ingress-top { - description - "Top-level grouping for ingress signal to logical channel"; - - container ingress { - description - "Top-level container for specifying references to the - source of signal for the logical channel, either a - transceiver or individual physical channels"; - - container config { - description - "Configuration data for the signal source for the - logical channel"; - - uses terminal-logical-channel-ingress-config; - } - - container state { - - config false; - - description - "Operational state data for the signal source for the - logical channel"; - - uses terminal-logical-channel-ingress-config; - uses terminal-logical-channel-ingress-state; - } - } - } - - grouping terminal-logical-channel-config { - description - "Configuration data for logical channels"; - - leaf index { - type uint32; - description - "Index of the current logical channel"; - } - - leaf description { - type string; - description - "Description of the logical channel"; - } - - leaf admin-state { - type oc-opt-types:admin-state-type; - description - "Sets the admin state of the logical channel"; - } - - leaf rate-class { - type identityref { - base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE; - } - description - "Rounded bit rate of the tributary signal. Exact bit rate - will be refined by protocol selection."; - } - - leaf trib-protocol { - type identityref { - base oc-opt-types:TRIBUTARY_PROTOCOL_TYPE; - } - description - "Protocol framing of the tributary signal. If this - LogicalChannel is directly connected to a Client-Port or - Optical-Channel, this is the protocol of the associated port. - If the LogicalChannel is connected to other LogicalChannels, - the TributaryProtocol of the LogicalChannels will define a - specific mapping/demapping or multiplexing/demultiplexing - function. - - Not all protocols are valid, depending on the value - of trib-rate-class. The expectation is that the NMS - will validate that a correct combination of rate class - and protocol are specfied. Basic combinations are: - - rate class: 1G - protocols: 1GE - - rate class: 2.5G - protocols: OC48, STM16 - - rate class: 10G - protocols: 10GE LAN, 10GE WAN, OC192, STM64, OTU2, OTU2e, - OTU1e, ODU2, ODU2e, ODU1e - - rate class: 40G - protocols: 40GE, OC768, STM256, OTU3, ODU3 - - rate class: 100G - protocols: 100GE, 100G MLG, OTU4, OTUCn, ODU4"; - } - - leaf logical-channel-type { - type identityref { - base oc-opt-types:LOGICAL_ELEMENT_PROTOCOL_TYPE; - } - description - "The type / stage of the logical element determines the - configuration and operational state parameters (PMs) - available for the logical element"; - } - - leaf loopback-mode { - type oc-opt-types:loopback-mode-type; - description - "Sets the loopback type on the logical channel. Setting the - mode to something besides NONE activates the loopback in - the specified mode."; - } - - leaf test-signal { - type boolean; - description - "When enabled the logical channel's DSP will generate a pseudo - randmon bit stream (PRBS) which can be used during testing."; - } - } - - - grouping terminal-logical-channel-state { - description - "Operational state data for logical client channels"; - - leaf link-state { - type enumeration { - enum UP { - description - "Logical channel is operationally up"; - } - enum DOWN { - description - "Logical channel is operationally down"; - } - enum TESTING { - description - "Logical channel is under test as a result of - enabling test-signal"; - } - } - description - "Link-state of the Ethernet protocol on the logical channel, - SONET / SDH framed signal, etc."; - } - - } - - grouping terminal-logical-channel-top { - description - "Top-level grouping for logical channels"; - - container logical-channels { - description - "Enclosing container the list of logical channels"; - - list channel { - key "index"; - description - "List of logical channels"; - //TODO: naming for this list of logical elements should be - //revisited. - - leaf index { - type leafref { - path "../config/index"; - } - description - "Reference to the index of the logical channel"; - } - - container config { - description - "Configuration data for logical channels"; - - uses terminal-logical-channel-config; - - } - - container state { - - config false; - - description - "Operational state data for logical channels"; - - uses terminal-logical-channel-config; - uses terminal-logical-channel-state; - } - - uses terminal-otn-protocol-top { - when "config/logical-channel-type = 'PROT_OTN'" { - description - "Include the OTN protocol data only when the - channel is using OTN framing."; - } - } - uses terminal-ethernet-protocol-top { - when "config/logical-channel-type = 'PROT_ETHERNET'" { - description - "Include the Ethernet protocol statistics only when the - protocol used by the link is Ethernet."; - } - } - uses terminal-logical-channel-ingress-top; - uses terminal-logical-chan-assignment-top; - } - } - } - - - grouping terminal-optical-channel-config { - description - "Configuration data for describing optical channels"; - - leaf frequency { - type oc-opt-types:frequency-type; - description - "Frequency of the optical channel, expressed in MHz"; - } - - leaf target-output-power { - type decimal64 { - fraction-digits 2; - } - units dBm; - description - "Target output optical power level of the optical channel, - expressed in increments of 0.01 dBm (decibel-milliwats)"; - } - - leaf operational-mode { - type uint16; - description - "Vendor-specific mode identifier -- sets the operational - mode for the channel. The specified operational mode must - exist in the list of supported operational modes supplied - by the device"; - // - // Ideally, this leaf should be a leafref to the supported - // operational modes, but YANG 1.0 does not allow a r/w - // leaf to be a leafref to a r/o leaf. - } - - - leaf line-port { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to the line-side physical port that carries - this optical channel. The target port should be - a component in the physical inventory data model."; - } - } - - grouping terminal-optical-channel-state { - description - "Operational state data for optical channels"; - - leaf group-id { - type uint32; - description - "If the device places constraints on which optical - channels must be managed together (e.g., transmitted on the - same line port), it can indicate that by setting the group-id - to the same value across related optical channels."; - } - - uses oc-transceiver:optical-power-state; - - container chromatic-dispersion { - description - "Chromatic Dispersion of an optical channel in - picoseconds / nanometer (ps/nm) as reported by receiver - with two decimal precision. Values include the instantaneous, - average, minimum, and maximum statistics. If avg/min/max - statistics are not supported, the target is expected to just - supply the instant value"; - - uses oc-opt-types:avg-min-max-instant-stats-precision2-ps-nm; - } - - container polarization-mode-dispersion { - description - "Polarization Mode Dispersion of an optical channel - in picosends (ps) as reported by receiver with two decimal - precision. Values include the instantaneous, average, - minimum, and maximum statistics. If avg/min/max statistics - are not supported, the target is expected to just supply the - instant value"; - - uses oc-opt-types:avg-min-max-instant-stats-precision2-ps; - } - - container second-order-polarization-mode-dispersion { - description - "Second Order Polarization Mode Dispersion of an optical - channel in picoseconds squared (ps^2) as reported by - receiver with two decimal precision. Values include the - instantaneous, average, minimum, and maximum statistics. - If avg/min/max statistics are not supported, the target - is expected to just supply the instant value"; - - uses oc-opt-types:avg-min-max-instant-stats-precision2-ps2; - } - - container polarization-dependent-loss { - description - "Polarization Dependent Loss of an optical channel - in dB as reported by receiver with two decimal precision. - Values include the instantaneous, average, minimum, and - maximum statistics. If avg/min/max statistics are not - supported, the target is expected to just supply the - instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dB; - } - } - - grouping terminal-optical-channel-top { - description - "Top-level grouping for optical channel data"; - - container optical-channel { - description - "Enclosing container for the list of optical channels"; - - container config { - description - "Configuration data for optical channels"; - - uses terminal-optical-channel-config; - } - - container state { - - config false; - - description - "Operational state data for optical channels"; - - uses terminal-optical-channel-config; - uses terminal-optical-channel-state; - } - } - } - - grouping terminal-operational-mode-config { - description - "Configuration data for vendor-supported operational modes"; - } - - grouping terminal-operational-mode-state { - description - "Operational state data for vendor-supported operational - modes"; - - leaf mode-id { - type uint16; - description - "Two-octet encoding of the vendor-defined operational - mode"; - } - - leaf description { - type string; - description - "Vendor-supplied textual description of the characteristics - of this operational mode to enable operators to select the - appropriate mode for the application."; - } - - //TODO: examples of the kind of info that would be useful to - //report in the operational mode: - //Symbol rate (32G, 40G, 43G, 64G, etc.) - //Modulation (QPSK, 8-QAM, 16-QAM, etc.) - //Differential encoding (on, off/pilot symbol, etc) - //State of polarization tracking mode (default, med. - //high-speed, etc.) - //Pulse shaping (RRC, RC, roll-off factor) - //FEC mode (SD, HD, % OH) - - leaf vendor-id { - type string; - description - "Identifier to represent the vendor / supplier of the - platform and the associated operational mode information"; - } - } - - grouping terminal-operational-mode-top { - description - "Top-level grouping for vendor-supported operational modes"; - - container operational-modes { - description - "Enclosing container for list of operational modes"; - - list mode { - key "mode-id"; - config false; - description - "List of operational modes supported by the platform. - The operational mode provides a platform-defined summary - of information such as symbol rate, modulation, pulse - shaping, etc."; - - leaf mode-id { - type leafref { - path "../state/mode-id"; - } - description - "Reference to mode-id"; - } - - container config { - description - "Configuration data for operational mode"; - - uses terminal-operational-mode-config; - } - - container state { - - config false; - - description - "Operational state data for the platform-defined - operational mode"; - - uses terminal-operational-mode-config; - uses terminal-operational-mode-state; - } - } - } - } - - grouping ethernet-config-ext { - description - "Extended ethernet config data on terminal device"; - - leaf client-fec { - type enumeration { - enum ENABLED { - description - "FEC is enabled"; - } - - enum DISABLED { - description - "FEC is disabled"; - } - - enum AUTO { - description - "System will automatically enable or disable FEC - according to the Ethernet compliance codes (PMD) - supported by transceivers"; - } - } - default AUTO; - description - "Configure whether FEC will be manually or automatically - enabled or disabled on the client port"; - } - - leaf client-als { - type enumeration { - enum NONE { - description - "The client port will do nothing when a failure is - detected on the line port or the remote client port"; - } - enum LASER_SHUTDOWN { - description - "The client port will shut down the laser to notify the - subtending Ethernet equipment of the failure detected on - the line port or the remote client port."; - } - enum ETHERNET { - description - "The client port will propagate the local fault or remote - fault signal to the subtending Ethernet equipment."; - } - } - default ETHERNET; - description - "Sets the client port behavior that defines if the actions - of automatic laser shutdown (als), ethernet fault - propagation, or nothing will be done upon the detection - of a failure on the line port or the upstream remote - client port."; - } - - leaf als-delay { - type uint32; - units milliseconds; - default 0; - description - "The timer to delay the client-als actions on the client - port when a local or remote fault is detected on the line - port. The delay will only be valid when the client-als is - set to LASER_SHUTDOWN"; - } - } - - grouping terminal-device-config { - description - "Configuration data for transport terminal devices at a - device-wide level"; - } - - grouping terminal-device-state { - description - "Operational state data for transport terminal devices at a - device-wide level"; - } - - grouping terminal-device-top { - description - "Top-level grouping for data for terminal devices"; - - container terminal-device { - description - "Top-level container for the terminal device"; - - container config { - description - "Configuration data for global terminal-device"; - - uses terminal-device-config; - } - - container state { - - config false; - - description - "Operational state data for global terminal device"; - - uses terminal-device-config; - uses terminal-device-state; - } - - uses terminal-logical-channel-top; - uses terminal-operational-mode-top; - - } - } - - - grouping lldp-interface-config { - description - "Extension to the configuration data for LLDP on each - optical terminal interface"; - - leaf snooping { - type boolean; - default "false"; - description - "If true, LLDP PDUs are only received and processed on - the interface, but are not originated by the local agent. - The PDUs are not dropped by the interface after processing, - but relayed to the downstream link layer neighbors. - If false, LLDP PDUs are both received and originated on the - interface. The snooping mode is valid only when LLDP is - enabled on the interface. The snooping mode is useful - when an interface does not want its link layer neighbors to - discover itself since, for example, it is a lower-layer - interface"; - } - } - - // data definition statements - - uses terminal-device-top; - - // augment statements - - augment "/oc-platform:components/oc-platform:component" { - when "/oc-platform:components/oc-platform:component/" + - "oc-platform:state/oc-platform:type = 'OPTICAL_CHANNEL'" { - description - "Augment is active when component is of type - OPTICAL_CHANNEL"; - } - description - "Adding optical channel data to physical inventory"; - - uses terminal-optical-channel-top { - } - } - - augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet" + - "/oc-eth:config" { - description - "Adds configuration data for client interfaces using Ethernet - framing"; - - uses ethernet-config-ext; - } - - augment "/oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/" + - "oc-lldp:config" { - description - "Augment the lldp config data to support the snooping mode - for each optical terminal interface"; - - uses lldp-interface-config; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-transport-line-common.yang b/src/plugins/yang/openconfig/openconfig-transport-line-common.yang deleted file mode 100644 index 9db16b6..0000000 --- a/src/plugins/yang/openconfig/openconfig-transport-line-common.yang +++ /dev/null @@ -1,317 +0,0 @@ -module openconfig-transport-line-common { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/transport-line-common"; - - prefix "oc-line-com"; - - // import some basic types - import iana-if-type { prefix ift; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-interfaces { prefix oc-if; } - import openconfig-platform { prefix oc-platform; } - import openconfig-types { prefix oc-types; } - import openconfig-transport-types { prefix oc-opt-types; } - import openconfig-platform-transceiver { prefix oc-transceiver; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module defines common data elements for OpenConfig data - models for optical transport line system elements, such as - amplifiers and ROADMs (wavelength routers)."; - - oc-ext:openconfig-version "0.4.1"; - - revision "2018-07-17" { - description - "Remove leaf 'enabled' from osc-config"; - reference "0.4.1"; - } - - revision "2018-05-08" { - description - "Added leaf 'enabled' to osc-config and - leaf 'output-frequency' to osc-state"; - reference "0.4.0"; - } - - revision "2017-09-08" { - description - "Correct bug with OSC interfaces"; - reference "0.3.1"; - } - - revision "2017-07-08" { - description - "Add monitor port type and refs to hw ports, "; - reference "0.3.0"; - } - - revision "2017-03-28" { - description - "Added min/max/avg stats, status for media channels, OCM, APS"; - reference "0.2.0"; - } - - revision "2016-03-31" { - description - "Initial public release"; - reference "0.1.0"; - } - - - // extension statements - - // feature statements - - // identity statements - - identity OPTICAL_LINE_PORT_TYPE { - description - "Type definition for optical node port types"; - } - - identity INGRESS { - base OPTICAL_LINE_PORT_TYPE; - description - "Ingress port, corresponding to a signal entering - a line device such as an amplifier or wavelength - router."; - } - - identity EGRESS { - base OPTICAL_LINE_PORT_TYPE; - description - "Egress port, corresponding to a signal exiting - a line device such as an amplifier or wavelength - router."; - } - - identity ADD { - base OPTICAL_LINE_PORT_TYPE; - description - "Add port, corresponding to a signal injected - at a wavelength router."; - } - - identity DROP { - base OPTICAL_LINE_PORT_TYPE; - description - "Drop port, corresponding to a signal dropped - at a wavelength router."; - } - - identity MONITOR { - base OPTICAL_LINE_PORT_TYPE; - description - "Monitor port, corresponding to a signal used by an optical - channel monitor. This is used to represent the connection - that a channel monitor port is connected to. This - connection may be via physical cable and faceplate ports or - internal to the device"; - } - - // typedef statements - - // grouping statements - - grouping optical-osc-config { - description - "Configuration data for OSC interfaces"; - - leaf interface { - type oc-if:base-interface-ref; - description - "Reference to an OSC interface"; - } - } - - grouping optical-osc-state { - description - "Operational state data for OSC interfaces"; - - container input-power { - description - "The input optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - the target is expected to just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container output-power { - description - "The output optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - the target is expected to just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container laser-bias-current { - description - "The current applied by the system to the transmit laser to - achieve the output power. The current is expressed in mA - with up to one decimal precision. If avg/min/max statistics - are not supported, the target is expected to just supply - the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-mA; - } - - uses oc-transceiver:output-optical-frequency; - } - - - - grouping optical-osc-top { - description - "Top-level grouping for configuration and operational state - data for optical supervisory channels (OSC) for amplifiers, - WSS/ROADM, nodes, etc."; - - container config { - description - "Configuration data for OSCs"; - - uses optical-osc-config; - } - - container state { - - config false; - - description - "Operational state data for OSCs"; - - uses optical-osc-config; - uses optical-osc-state; - } - } - - - grouping transport-line-common-port-config { - description - "Configuration data for optical line ports"; - - leaf admin-state { - type oc-opt-types:admin-state-type; - description - "Sets the admin state of the optical-port"; - } - } - - grouping transport-line-common-port-state { - description - "Operational state data describing optical line ports"; - - leaf optical-port-type { - type identityref { - base OPTICAL_LINE_PORT_TYPE; - } - description - "Indicates the type of transport line port. This is an - informational field that should be made available by the - device (e.g., in the openconfig-platform model)."; - } - - container input-power { - description - "The total input optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - - container output-power { - description - "The total output optical power of this port in units - of 0.01dBm. If avg/min/max statistics are not supported, - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - } - - grouping transport-line-common-port-top { - description - "Top-level grouping "; - - container optical-port { - description - "Top-level container "; - - container config { - - description - "Operational config data for optical line ports"; - - uses transport-line-common-port-config; - } - - container state { - - config false; - - description - "Operational state data for optical line ports"; - - uses transport-line-common-port-config; - uses transport-line-common-port-state; - } - } - } - - - - // data definition statements - - // uses optical-osc-top; - - // augment statements - - augment "/oc-platform:components/oc-platform:component" { - description - "Adding optical line port data to platform model"; - - uses transport-line-common-port-top { - when "/oc-platform:components/oc-platform:component/" + - "oc-platform:state/oc-platform:type = 'PORT'" { - description - "Augment is active when component is of type - PORT"; - } - } - } - - //TODO:this is placeholder until SONET model is added - //to interfaces model - augment "/oc-if:interfaces/oc-if:interface" { - when "oc-if:config/oc-if:type = 'ift:sonet'" { - description "Additional interface configuration parameters when - the interface type is SONET/SDH"; - } - description "Adds additional SONET/SDH-specific data to - osc model"; - - container sonet { - description - "Data related to SONET/SDH interfaces"; - } - } - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang b/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang deleted file mode 100644 index 0e21a02..0000000 --- a/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang +++ /dev/null @@ -1,612 +0,0 @@ -module openconfig-transport-line-protection { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/optical-transport-line-protection"; - - prefix "oc-line-protect"; - - import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } - import openconfig-platform { prefix oc-platform; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This model describes configuration and operational state data - for optical line protection elements, deployed as part of a - transport line system. An Automatic Protection Switch (APS) - is typically installed in the same device as the amplifiers - and wave-router, however an APS can also be a standalone - device. In both scenarios, it serves the same purpose of - providing protection using two dark fiber pairs to ensure the - amplifiers can still receive a signal if one of the two fiber - pairs is broken. The APS port details and directionality are - shown below. The three major attributes, together with their - modifiers, define the behavior of the APS and can be prioritized - in the descending order as shown in the following table"; - - // - // Automatic Protection Switch (APS) port details and directionality. - // _________ - // | | - // | | <=== LINE-PRIMARY-IN - // | | - // COMMON-IN ===> | | ===> LINE-PRIMARY-OUT - // | | - // | APS | - // COMMON-OUT <=== | | - // | | <=== LINE-SECONDARY-IN - // | | - // | | ===> LINE-SECONDARY-OUT - // |_______| - // - // - // The interaction of configuration attributes that control the - // protection switching behavior - // +------------------+--------------------+------------------------+ - // | Attribute | Modifier | Behavior | - // +------------------+--------------------+------------------------+ - // | force-to-port | n/a | turns off switching | - // | | | by forcing to primary | - // | | | or secondary | - // +------------------+--------------------+------------------------+ - // | relative-switch | relative-threshold | if set, overrides | - // | -threshold | -offset | primary and secondary | - // | | | switch thresholds | - // +------------------+--------------------+------------------------+ - // | primary-switch | primary-switch | sets respective | - // | -threshold, | -hysteresis | threshold to switch | - // | secondary-switch | | to opposite port | - // | -threshold | | | - // +------------------+--------------------+------------------------+ - - oc-ext:openconfig-version "0.4.0"; - - revision "2018-07-25" { - description - "Added wait-to-restore-time, hold-off-time, - relative-switch-threshold, relative-switch-threshold-offset, - forced-to-port, removed secondary-switch-hysteresis, and - edited the description of primary-switch-threshold, - secondary-switch-threshold, and primary-switch-hysteresis"; - reference "0.4.0"; - } - - revision "2017-09-08" { - description - "Correct bug with OSC interfaces"; - reference "0.3.1"; - } - - revision "2017-07-08" { - description - "Support multiple OCMs, add monitor port type - and refs to hw ports, "; - reference "0.3.0"; - } - - revision "2017-03-28" { - description - "Added min/max/avg stats, status for media channels, OCM, APS"; - reference "0.2.0"; - } - - revision "2016-08-05" { - description - "Initial public release"; - reference "0.1.0"; - } - - // extension statements - - // feature statements - - // identity statements - - identity APS_PATHS { - description - "Base identity for identifying the line paths on an - automatic protection switch"; - } - - identity PRIMARY { - base APS_PATHS; - description - "The primary line path connected to an automatic protection - switch port indicating the primary/preferred path"; - } - - identity SECONDARY { - base APS_PATHS; - description - "The secondary line path connected to an automatic protection - switch port indicating the secondary path"; - } - - // grouping statements - - grouping aps-input-port-config { - description - "Grouping for config related to unidirectional automatic - protection switch input ports"; - - leaf enabled { - type boolean; - default "true"; - description - "This leaf contains the configured, desired state of the - port. Disabling the port turns off alarm reporting for - the port"; - } - - leaf target-attenuation { - type decimal64 { - fraction-digits 2; - } - units dB; - description - "Target attenuation of the variable optical attenuator - associated with the port in increments of 0.01 dB."; - } - } - - grouping aps-output-port-config { - description - "Grouping for config related to unidirectional automatic - protection switch output ports"; - - leaf target-attenuation { - type decimal64 { - fraction-digits 2; - } - units dB; - description - "Target attenuation of the variable optical attenuator - associated with the port in increments of 0.01 dB"; - } - } - - grouping aps-input-port-state { - description - "Grouping for state related to unidirectional automatic - protection switch input ports"; - - leaf attenuation { - type decimal64 { - fraction-digits 2; - } - units dB; - description - "The attenuation of the variable optical attenuator - associated with the port in increments of 0.01 dB."; - } - - container optical-power { - description - "The optical input power of this port in units of - 0.01dBm. Optical input power represents the signal - traversing from an external destination into the module. - The power is measured before any attenuation. If avg/min/max - statistics are not supported, the target is expected to - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - } - - grouping aps-output-port-state { - description - "Grouping for state related to unidirectional automatic - protection switch output ports"; - - leaf attenuation { - type decimal64 { - fraction-digits 2; - } - units dB; - description - "The attenuation of the variable optical attenuator - associated with the port in increments of 0.01 dB"; - } - - container optical-power { - description - "The optical output power of this port in units of - 0.01dBm. Optical output power represents the signal - traversing from the module to an external destination. The - power is measured after any attenuation. If avg/min/max - statistics are not supported, the target is expected to - just supply the instant value"; - - uses oc-types:avg-min-max-instant-stats-precision2-dBm; - } - } - - grouping aps-ports { - description - "Top level grouping for automatic protection switch ports"; - - container line-primary-in { - description - "Container for information related to the line primary - input port"; - - container config { - description - "Configuration data for the line primary input port"; - - uses aps-input-port-config; - } - - container state { - - config false; - - description - "State data for the line primary input port"; - - uses aps-input-port-config; - uses aps-input-port-state; - } - - } - - container line-primary-out { - description - "Container for information related to the line primary - output port"; - - container config { - description - "Configuration data for the line primary output port"; - - uses aps-output-port-config; - } - - container state { - - config false; - - description - "State data for the line primary output port"; - - uses aps-output-port-config; - uses aps-output-port-state; - } - } - - container line-secondary-in { - description - "Container for information related to the line secondary - input port"; - - container config { - description - "Configuration data for the line secondary input port"; - - uses aps-input-port-config; - } - - container state { - - config false; - - description - "State data for the line secondary input port"; - - uses aps-input-port-config; - uses aps-input-port-state; - } - } - - container line-secondary-out { - description - "Container for information related to the line secondary - output port"; - - container config { - description - "Configuration data for the line secondary output port"; - - uses aps-output-port-config; - } - - container state { - - config false; - - description - "State data for the line secondary output port"; - - uses aps-output-port-config; - uses aps-output-port-state; - } - } - - container common-in { - description - "Container for information related to the line common - input port"; - - container config { - description - "Configuration data for the line common input port"; - - uses aps-input-port-config; - } - - container state { - - config false; - - description - "State data for the line common input port"; - - uses aps-input-port-config; - uses aps-input-port-state; - } - } - - container common-output { - description - "Container for information related to the line common - output port"; - - container config { - description - "Configuration data for the line common output port"; - - uses aps-output-port-config; - } - - container state { - - config false; - - description - "State data for the line common output port"; - - uses aps-output-port-config; - uses aps-output-port-state; - } - } - } - - grouping aps-config { - description - "Configuration data for automatic protection switch modules"; - - leaf name { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to the component name (in the platform model) - corresponding to this automatic protection switch module - in the device"; - } - - leaf revertive { - type boolean; - description - "Revertive behavior of the module. If True, then - automatically revert after protection switch once the - fault is restored. This leaf is not valid when the - relative-switch-threshold is in effect"; - } - - leaf wait-to-restore-time { - type uint32; - units milliseconds; - description - "The time that must elapse before an APS path - that has recovered from an signal failure (SF) or signal - degradation (SD) condition can be used again to transport - the normal traffic signal. During this time period, an SF or - SD condition shall override the wait-to-restore time period. - This leaf can only take effect when the revertive leaf - equals true"; - } - - leaf hold-off-time { - type uint32; - units milliseconds; - description - "The time delay between the declaration of an SF or SD - condition and the initiation of the protection switching - algorithm"; - } - - leaf primary-switch-threshold { - type decimal64 { - fraction-digits 2; - } - units dBm; - description - "The threshold at which the primary line port will switch to - the opposite line port in increments of 0.01 dBm. If the - hardware supports only one switch threshold for primary and - and secondary ports then it is recommended to set both - primary-switch-threshold and secondary-switch-threshold to - the same value to be explicit. When the relative switch - threshold is enabled, i.e. set to a non-zero value, the - primary switch threshold will be overridden"; - } - - leaf primary-switch-hysteresis { - type decimal64 { - fraction-digits 2; - } - units dB; - default 0; - description - "The delta in dB between the primary-switch-threshold - and the signal received on the primary APS_PATH before - initiating a switch from the secondary APS_PATH to the - primary APS_PATH, in order to prevent toggling between ports - when an input signal is very close to the threshold. A zero - value means the switch hysteresis is disabled."; - } - - leaf secondary-switch-threshold { - type decimal64 { - fraction-digits 2; - } - units dBm; - description - "The threshold at which the secondary line port will switch to - the opposite line port in increments of 0.01 dBm. If the - hardware supports only one switch threshold for primary and - and secondary ports then it is recommended to set both - primary-switch-threshold and secondary-switch-threshold to - the same value to be explicit. When the relative switch - threshold is enabled, i.e. set to a non-zero value, the - secondary switch threshold will be overridden"; - } - - leaf relative-switch-threshold { - type decimal64 { - fraction-digits 2; - } - units dB; - default 0; - description - "The delta threshold in dB at which the current line port - will switch to the opposite line port. It can be set to - the value of 0dB. When set to 0dB, the threshold is ignored - and the system automatically applies the primary and - secondary switch thresholds. When set to a non-zero value, - it overrides the primary and secondary switch thresholds"; - } - - leaf relative-switch-threshold-offset { - type decimal64 { - fraction-digits 2; - } - units dB; - default 0; - description - "The offset of the relative switch threshold that compensates - the normal difference of receiving power between the primary - and secondary line ports. A negative offset corresponds to - the situation where the secondary line port receives a higher - power than the primary line port in normal condition, and a - positive offset means the opposite. The offset will only work - when the relative switch threshold is set to a non-zero - value"; - } - - leaf force-to-port { - type enumeration { - enum NONE { - description - "Do not force the switch to stay on any line port"; - } - enum PRIMARY { - description - "Force the switch to stay on the primary line port"; - } - enum SECONDARY { - description - "Force the switch to stay on the secondary line port"; - } - } - default NONE; - description - "Explicitly set the switch to stay on a port regardless of - its operational condition"; - } - } - - grouping aps-state { - description - "State data for automatic protection switch modules"; - - leaf active-path { - type identityref { - base APS_PATHS; - } - description - "Indicates which line path on the protection switch is - currently the active path connected to the common port"; - } - } - - grouping automatic-protection-switch-top { - description - "Top level grouping for automatic protection switch data"; - - container aps-modules { - description - "Enclosing container for list of automatic protection - switch modules"; - - list aps-module { - key "name"; - description - "List of automatic protection switch modules present - in the device"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the config name list key"; - } - - container config { - description - "Configuration data for an automatic protection - switch module"; - - uses aps-config; - } - - container state { - - config false; - - description - "Operational state data for an automatic protection - switch module"; - - uses aps-config; - uses aps-state; - } - - container ports { - description - "Top level grouping for automatic protection switch ports"; - - uses aps-ports; - } - } - } - } - - grouping transport-line-protection-top { - description - "Top level grouping for transport line protection data"; - - container aps { - description - "Top level grouping for automatic protection switch data"; - - uses automatic-protection-switch-top; - } - } - - // data definition statements - - uses transport-line-protection-top; - -} diff --git a/src/plugins/yang/openconfig/openconfig-transport-types.yang b/src/plugins/yang/openconfig/openconfig-transport-types.yang deleted file mode 100644 index 247b973..0000000 --- a/src/plugins/yang/openconfig/openconfig-transport-types.yang +++ /dev/null @@ -1,834 +0,0 @@ -module openconfig-transport-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/transport-types"; - - prefix "oc-opt-types"; - - import openconfig-platform-types { prefix oc-platform-types; } - import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module contains general type definitions and identities - for optical transport models."; - - oc-ext:openconfig-version "0.6.0"; - - revision "2018-05-16" { - description - "Added interval,min,max time to interval stats."; - reference "0.6.0"; - } - - revision "2017-08-16" { - description - "Added ODU Cn protocol type"; - reference "0.5.0"; - } - - revision "2016-12-22" { - description - "Fixes and additions for terminal optics model"; - reference "0.4.0"; - } - - // typedef statements - - typedef frequency-type { - type uint64; - units "MHz"; - description - "Type for optical spectrum frequency values"; - } - - typedef admin-state-type { - type enumeration { - enum ENABLED { - description - "Sets the channel admin state to enabled"; - } - enum DISABLED { - description - "Sets the channel admin state to disabled"; - } - enum MAINT { - description - "Sets the channel to maintenance / diagnostic mode"; - } - } - description "Administrative state modes for - logical channels in the transponder model."; - } - - typedef loopback-mode-type { - type enumeration { - enum NONE { - description - "No loopback is applied"; - } - enum FACILITY { - description - "A loopback which directs traffic normally transmitted - on the port back to the device as if received on the same - port from an external source."; - } - enum TERMINAL { - description - "A loopback which directs traffic received from an external - source on the port back out the transmit side of the same - port."; - } - } - default NONE; - description - "Loopback modes for transponder logical channels"; - } - - // grouping statements - - grouping avg-min-max-instant-stats-precision2-ps-nm { - description - "Common grouping for recording picosecond per nanometer - values with 2 decimal precision. Values include the - instantaneous, average, minimum, and maximum statistics. - Statistics are computed and reported based on a moving time - interval (e.g., the last 30s). If supported by the device, - the time interval over which the statistics are computed, and - the times at which the minimum and maximum values occurred, - are also reported."; - - leaf instant { - type decimal64 { - fraction-digits 2; - } - units ps-nm; - description - "The instantaneous value of the statistic."; - } - - leaf avg { - type decimal64 { - fraction-digits 2; - } - units ps-nm; - description - "The arithmetic mean value of the statistic over the - time interval."; - } - - leaf min { - type decimal64 { - fraction-digits 2; - } - units ps-nm; - description - "The minimum value of the statistic over the time interval."; - } - - leaf max { - type decimal64 { - fraction-digits 2; - } - units ps-nm; - description - "The maximum value of the statistic over the time interval."; - } - - uses oc-types:stat-interval-state; - uses oc-types:min-max-time; - } - - grouping avg-min-max-instant-stats-precision2-ps { - description - "Common grouping for recording picosecond values with - 2 decimal precision. Values include the - instantaneous, average, minimum, and maximum statistics. - Statistics are computed and reported based on a moving time - interval (e.g., the last 30s). If supported by the device, - the time interval over which the statistics are computed, and - the times at which the minimum and maximum values occurred, - are also reported."; - - leaf instant { - type decimal64 { - fraction-digits 2; - } - units ps; - description - "The instantaneous value of the statistic."; - } - - leaf avg { - type decimal64 { - fraction-digits 2; - } - units ps; - description - "The arithmetic mean value of the statistic over the - time interval."; - } - - leaf min { - type decimal64 { - fraction-digits 2; - } - units ps; - description - "The minimum value of the statistic over the time interval."; - } - - leaf max { - type decimal64 { - fraction-digits 2; - } - units ps; - description - "The maximum value of the statistic over the time interval."; - } - - uses oc-types:stat-interval-state; - uses oc-types:min-max-time; - } - - grouping avg-min-max-instant-stats-precision2-ps2 { - description - "Common grouping for recording picosecond^2 values with - 2 decimal precision. Values include the - instantaneous, average, minimum, and maximum statistics. - Statistics are computed and reported based on a moving time - interval (e.g., the last 30s). If supported by the device, - the time interval over which the statistics are computed, and - the times at which the minimum and maximum values occurred, - are also reported."; - - leaf instant { - type decimal64 { - fraction-digits 2; - } - units ps^2; - description - "The instantaneous value of the statistic."; - } - - leaf avg { - type decimal64 { - fraction-digits 2; - } - units ps^2; - description - "The arithmetic mean value of the statistic over the - time interval."; - } - - leaf min { - type decimal64 { - fraction-digits 2; - } - units ps^2; - description - "The minimum value of the statistic over the time interval."; - } - - leaf max { - type decimal64 { - fraction-digits 2; - } - units ps^2; - description - "The maximum value of the statistic over the time - interval."; - } - - uses oc-types:stat-interval-state; - uses oc-types:min-max-time; - } - - grouping avg-min-max-instant-stats-precision18-ber { - description - "Common grouping for recording bit error rate (BER) values - with 18 decimal precision. Note that decimal64 supports - values as small as i x 10^-18 where i is an integer. Values - smaller than this should be reported as 0 to inidicate error - free or near error free performance. Values include the - instantaneous, average, minimum, and maximum statistics. - Statistics are computed and reported based on a moving time - interval (e.g., the last 30s). If supported by the device, - the time interval over which the statistics are computed, and - the times at which the minimum and maximum values occurred, - are also reported."; - - leaf instant { - type decimal64 { - fraction-digits 18; - } - units bit-errors-per-second; - description - "The instantaneous value of the statistic."; - } - - leaf avg { - type decimal64 { - fraction-digits 18; - } - units bit-errors-per-second; - description - "The arithmetic mean value of the statistic over the - time interval."; - } - - leaf min { - type decimal64 { - fraction-digits 18; - } - units bit-errors-per-second; - description - "The minimum value of the statistic over the time - interval."; - } - - leaf max { - type decimal64 { - fraction-digits 18; - } - units bit-errors-per-second; - description - "The maximum value of the statistic over the time - interval."; - } - - uses oc-types:stat-interval-state; - uses oc-types:min-max-time; - } - - // identity statements - - identity TRIBUTARY_PROTOCOL_TYPE { - description - "Base identity for protocol framing used by tributary - signals."; - } - - identity PROT_1GE { - base TRIBUTARY_PROTOCOL_TYPE; - description "1G Ethernet protocol"; - } - - identity PROT_OC48 { - base TRIBUTARY_PROTOCOL_TYPE; - description "OC48 protocol"; - } - - identity PROT_STM16 { - base TRIBUTARY_PROTOCOL_TYPE; - description "STM 16 protocol"; - } - - identity PROT_10GE_LAN { - base TRIBUTARY_PROTOCOL_TYPE; - description "10G Ethernet LAN protocol"; - } - - identity PROT_10GE_WAN { - base TRIBUTARY_PROTOCOL_TYPE; - description "10G Ethernet WAN protocol"; - } - - identity PROT_OC192 { - base TRIBUTARY_PROTOCOL_TYPE; - description "OC 192 (9.6GB) port protocol"; - } - - identity PROT_STM64 { - base TRIBUTARY_PROTOCOL_TYPE; - description "STM 64 protocol"; - } - - identity PROT_OTU2 { - base TRIBUTARY_PROTOCOL_TYPE; - description "OTU 2 protocol"; - } - - identity PROT_OTU2E { - base TRIBUTARY_PROTOCOL_TYPE; - description "OTU 2e protocol"; - } - - identity PROT_OTU1E { - base TRIBUTARY_PROTOCOL_TYPE; - description "OTU 1e protocol"; - } - - identity PROT_ODU2 { - base TRIBUTARY_PROTOCOL_TYPE; - description "ODU 2 protocol"; - } - - identity PROT_ODU2E { - base TRIBUTARY_PROTOCOL_TYPE; - description "ODU 2e protocol"; - } - - identity PROT_40GE { - base TRIBUTARY_PROTOCOL_TYPE; - description "40G Ethernet port protocol"; - } - - identity PROT_OC768 { - base TRIBUTARY_PROTOCOL_TYPE; - description "OC 768 protocol"; - } - - identity PROT_STM256 { - base TRIBUTARY_PROTOCOL_TYPE; - description "STM 256 protocol"; - } - - identity PROT_OTU3 { - base TRIBUTARY_PROTOCOL_TYPE; - description "OTU 3 protocol"; - } - - identity PROT_ODU3 { - base TRIBUTARY_PROTOCOL_TYPE; - description "ODU 3 protocol"; - } - - identity PROT_100GE { - base TRIBUTARY_PROTOCOL_TYPE; - description "100G Ethernet protocol"; - } - - identity PROT_100G_MLG { - base TRIBUTARY_PROTOCOL_TYPE; - description "100G MLG protocol"; - } - - identity PROT_OTU4 { - base TRIBUTARY_PROTOCOL_TYPE; - description "OTU4 signal protocol (112G) for transporting - 100GE signal"; - } - - identity PROT_OTUCN { - base TRIBUTARY_PROTOCOL_TYPE; - description "OTU Cn protocol"; - } - - identity PROT_ODUCN { - base TRIBUTARY_PROTOCOL_TYPE; - description "ODU Cn protocol"; - } - - identity PROT_ODU4 { - base TRIBUTARY_PROTOCOL_TYPE; - description "ODU 4 protocol"; - } - - identity TRANSCEIVER_FORM_FACTOR_TYPE { - description - "Base identity for identifying the type of pluggable optic - transceiver (i.e,. form factor) used in a port."; - } - - identity CFP { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "C form-factor pluggable, that can support up to a - 100 Gb/s signal with 10x10G or 4x25G physical channels"; - } - - identity CFP2 { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "1/2 C form-factor pluggable, that can support up to a - 200 Gb/s signal with 10x10G, 4x25G, or 8x25G physical - channels"; - } - - identity CFP2_ACO { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "CFP2 analog coherent optics transceiver, supporting - 100 Gb, 200Gb, and 250 Gb/s signal."; - } - - identity CFP4 { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "1/4 C form-factor pluggable, that can support up to a - 100 Gb/s signal with 10x10G or 4x25G physical channels"; - } - - identity QSFP { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "OriginalQuad Small Form-factor Pluggable transceiver that can - support 4x1G physical channels. Not commonly used."; - } - - identity QSFP_PLUS { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "Quad Small Form-factor Pluggable transceiver that can support - up to 4x10G physical channels."; - } - - identity QSFP28 { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "QSFP pluggable optic with support for up to 4x28G physical - channels"; - } - - identity CPAK { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "Cisco CPAK transceiver supporting 100 Gb/s."; - } - - identity SFP { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "Small form-factor pluggable transceiver supporting up to - 10 Gb/s signal"; - } - - identity SFP_PLUS { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "Enhanced small form-factor pluggable transceiver supporting - up to 16 Gb/s signals, including 10 GbE and OTU2"; - } - - identity XFP { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "10 Gigabit small form factor pluggable transceiver supporting - 10 GbE and OTU2"; - } - - identity X2 { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "10 Gigabit small form factor pluggable transceiver supporting - 10 GbE using a XAUI inerface and 4 data channels."; - } - - identity NON_PLUGGABLE { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "Represents a port that does not require a pluggable optic, - e.g., with on-board optics like COBO"; - } - - identity OTHER { - base TRANSCEIVER_FORM_FACTOR_TYPE; - description - "Represents a transceiver form factor not otherwise listed"; - } - - identity FIBER_CONNECTOR_TYPE { - description - "Type of optical fiber connector"; - } - - identity SC_CONNECTOR { - base FIBER_CONNECTOR_TYPE; - description - "SC type fiber connector"; - } - - identity LC_CONNECTOR { - base FIBER_CONNECTOR_TYPE; - description - "LC type fiber connector"; - } - - identity MPO_CONNECTOR { - base FIBER_CONNECTOR_TYPE; - description - "MPO (multi-fiber push-on/pull-off) type fiber connector - 1x12 fibers"; - } - - identity ETHERNET_PMD_TYPE { - description - "Ethernet compliance codes (PMD) supported by transceivers"; - } - - identity ETH_10GBASE_LRM { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 10GBASE_LRM"; - } - - identity ETH_10GBASE_LR { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 10GBASE_LR"; - } - - identity ETH_10GBASE_ZR { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 10GBASE_ZR"; - } - - identity ETH_10GBASE_ER { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 10GBASE_ER"; - } - - identity ETH_10GBASE_SR { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 10GBASE_SR"; - } - - identity ETH_40GBASE_CR4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 40GBASE_CR4"; - } - - identity ETH_40GBASE_SR4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 40GBASE_SR4"; - } - - identity ETH_40GBASE_LR4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 40GBASE_LR4"; - } - - identity ETH_40GBASE_ER4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 40GBASE_ER4"; - } - - identity ETH_40GBASE_PSM4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 40GBASE_PSM4"; - } - - identity ETH_4X10GBASE_LR { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 4x10GBASE_LR"; - } - - identity ETH_4X10GBASE_SR { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 4x10GBASE_SR"; - } - - identity ETH_100G_AOC { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100G_AOC"; - } - - identity ETH_100G_ACC { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100G_ACC"; - } - - identity ETH_100GBASE_SR10 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_SR10"; - } - - identity ETH_100GBASE_SR4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_SR4"; - } - - identity ETH_100GBASE_LR4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_LR4"; - } - - identity ETH_100GBASE_ER4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_ER4"; - } - - identity ETH_100GBASE_CWDM4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_CWDM4"; - } - - identity ETH_100GBASE_CLR4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_CLR4"; - } - - identity ETH_100GBASE_PSM4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_PSM4"; - } - - identity ETH_100GBASE_CR4 { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_CR4"; - } - - identity ETH_UNDEFINED { - base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: undefined"; - } - - identity SONET_APPLICATION_CODE { - description - "Supported SONET/SDH application codes"; - } - - identity VSR2000_3R2 { - base SONET_APPLICATION_CODE; - description - "SONET/SDH application code: VSR2000_3R2"; - } - - identity VSR2000_3R3 { - base SONET_APPLICATION_CODE; - description - "SONET/SDH application code: VSR2000_3R3"; - } - - identity VSR2000_3R5 { - base SONET_APPLICATION_CODE; - description - "SONET/SDH application code: VSR2000_3R5"; - } - - identity SONET_UNDEFINED { - base SONET_APPLICATION_CODE; - description - "SONET/SDH application code: undefined"; - } - - identity OTN_APPLICATION_CODE { - description - "Supported OTN application codes"; - } - - identity P1L1_2D1 { - base OTN_APPLICATION_CODE; - description - "OTN application code: P1L1_2D1"; - } - - identity P1S1_2D2 { - base OTN_APPLICATION_CODE; - description - "OTN application code: P1S1_2D2"; - } - - identity P1L1_2D2 { - base OTN_APPLICATION_CODE; - description - "OTN application code: P1L1_2D2"; - } - - identity OTN_UNDEFINED { - base OTN_APPLICATION_CODE; - description - "OTN application code: undefined"; - } - - identity TRIBUTARY_RATE_CLASS_TYPE { - description - "Rate of tributary signal _- identities will typically reflect - rounded bit rate."; - } - - identity TRIB_RATE_1G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "1G tributary signal rate"; - } - - identity TRIB_RATE_2.5G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "2.5G tributary signal rate"; - } - - identity TRIB_RATE_10G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "10G tributary signal rate"; - } - - identity TRIB_RATE_40G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "40G tributary signal rate"; - } - - identity TRIB_RATE_100G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "100G tributary signal rate"; - } - - identity TRIB_RATE_150G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "150G tributary signal rate"; - } - - identity TRIB_RATE_200G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "200G tributary signal rate"; - } - - identity TRIB_RATE_250G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "250G tributary signal rate"; - } - - identity TRIB_RATE_300G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "300G tributary signal rate"; - } - - identity TRIB_RATE_400G { - base TRIBUTARY_RATE_CLASS_TYPE; - description - "400G tributary signal rate"; - } - - identity LOGICAL_ELEMENT_PROTOCOL_TYPE { - description - "Type of protocol framing used on the logical channel or - tributary"; - } - - identity PROT_ETHERNET { - base LOGICAL_ELEMENT_PROTOCOL_TYPE; - description - "Ethernet protocol framing"; - } - - identity PROT_OTN { - base LOGICAL_ELEMENT_PROTOCOL_TYPE; - description - "OTN protocol framing"; - } - - identity OPTICAL_CHANNEL { - base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT; - description - "Optical channels act as carriers for transport traffic - directed over a line system. They are represented as - physical components in the physical inventory model."; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-wavelength-router.yang b/src/plugins/yang/openconfig/openconfig-wavelength-router.yang deleted file mode 100644 index c6ad945..0000000 --- a/src/plugins/yang/openconfig/openconfig-wavelength-router.yang +++ /dev/null @@ -1,360 +0,0 @@ -module openconfig-wavelength-router { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/wavelength-router"; - - prefix "oc-wave-router"; - - // import some basic types - import openconfig-extensions { prefix oc-ext; } - import openconfig-platform { prefix oc-platform; } - import openconfig-transport-types { prefix oc-opt-types; } - import openconfig-types { prefix oc-types; } - - - // meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This model describes configuration and operational state data - for an optical transport line system node, or ROADM (incl. CDC - ROADMs, WSS, Dynamic Gain Equalizer/DGE). - - Nodes are modeled as a configurable switching element with - ingress and egress ports, as well as a number of add/drop ports - that can be set up to direct portions of the optical spectrum - to the appropriate degrees."; - - oc-ext:openconfig-version "0.3.2"; - - revision "2018-07-17" { - description - "Correct bug so that source/dest ports are components"; - reference "0.3.2"; - } - - revision "2017-09-08" { - description - "Correct bug with OSC interfaces"; - reference "0.3.1"; - } - - revision "2017-07-08" { - description - "Support multiple OCMs, add monitor port type - and refs to hw ports, "; - reference "0.3.0"; - } - - revision "2017-03-28" { - description - "Added min/max/avg stats, status for media channels, OCM, APS"; - reference "0.2.0"; - } - - revision "2016-03-31" { - description - "Initial public release"; - reference "0.1.0"; - } - - - - // grouping statements - - grouping media-channel-port-config { - description - "Configuration data for a media channel source/dest port"; - - leaf port-name { - type leafref { - path "/oc-platform:components/oc-platform:component/" + - "oc-platform:name"; - } - description - "Reference to the corresponding node port"; - } - } - - grouping media-channel-port-state { - description - "Operational state data for a media channel source/dest port"; - } - - grouping media-channel-source-port-top { - description - "Top-level grouping for source of the media channel"; - - container source { - description - "Top-level container for media channel source"; - - container config { - description - "Configuration data for the media channel source"; - - uses media-channel-port-config; - } - - container state { - - config false; - - description - "Operational state data for the media channel source"; - - uses media-channel-port-config; - uses media-channel-port-state; - } - } - } - - grouping media-channel-dest-port-top { - description - "Top-level grouping for destination of the media channel"; - - container dest { - description - "Top-level container for media channel destination"; - - container config { - description - "Configuration data for the media channel destination"; - - uses media-channel-port-config; - } - - container state { - - config false; - - description - "Operational state data for the media channel destination"; - - uses media-channel-port-config; - uses media-channel-port-state; - } - } - } - - grouping media-channel-psd-config { - description - "Configuration data for the media channel PSD"; - - leaf lower-frequency { - type oc-opt-types:frequency-type; - description - "Lower frequency of the specified PSD"; - } - - leaf upper-frequency { - type oc-opt-types:frequency-type; - description - "Upper frequency of the specified PSD"; - } - - leaf psd { - type oc-types:ieeefloat32; - units "nW/MHz"; - description - "Power spectral density expressed in nanowatts per - megahertz, nW/MHz. These units allow the value to often - be greater than 1.0. It also avoids dealing with zero values - for 0dBm. For example, a 40GHz wide channel - with 0dBm power would be: - 0dBm = 1mW = 10^6nW - 40GHz = 40,000MHz - 0dBm/40GHz = 10^6nW/40,000MHz = 1000/40 = 25"; - } - } - - grouping media-channel-psd-state { - description - "Operational state data for the media channel PSD"; - } - - grouping media-channel-psd-top { - description - "Top-level grouping "; - - container psd-distribution { - description - "Enclosing container for the list of values describing - the power spectral density distribution"; - - list psd-value { - key "lower-frequency upper-frequency"; - description - "List of tuples describing the PSD distribution"; - - leaf lower-frequency { - type leafref { - path "../config/lower-frequency"; - } - description - "Reference to the list key"; - } - - leaf upper-frequency { - type leafref { - path "../config/upper-frequency"; - } - description - "Reference to the list key"; - } - - container config { - description - "Configuration data for PSD"; - - uses media-channel-psd-config; - } - - container state { - - config false; - - description - "Operational state data for PSD"; - - uses media-channel-psd-config; - uses media-channel-psd-state; - } - } - } - } - - grouping media-channel-config { - description - "Configuration data for media channel definitions"; - - leaf index { - type uint32; - description - "Identifier for the defined media channel"; - } - - leaf name { - type string; - description - "The user supplied name of the media channel"; - } - - leaf lower-frequency { - type oc-opt-types:frequency-type; - description - "The lower frequency for the spectrum defined by this media - channel"; - } - - leaf upper-frequency { - type oc-opt-types:frequency-type; - description - "The upper frequency for the spectrum defined by this media - channel"; - } - - leaf admin-status { - type oc-opt-types:admin-state-type; - description - "Sets the admin status of the media channel"; - } - - } - - grouping media-channel-state { - description - "Operational state data for media channels "; - - leaf oper-status { - type enumeration { - enum UP { - description - "Media channel is operationally up"; - } - enum DOWN { - description - "Media channel is operationally down"; - } - } - description - "Operational state of the media channel"; - } - - } - - grouping media-channel-top { - description - "Top-level grouping for list of defined media channels"; - - container media-channels { - description - "Enclosing container for media channel list"; - - list channel { - key "index"; - description - "List of media channels"; - - leaf index { - type leafref { - path "../config/index"; - } - description - "Reference to index number of the media channel"; - } - - container config { - description - "Configuration data "; - - uses media-channel-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses media-channel-config; - uses media-channel-state; - } - - uses media-channel-source-port-top; - uses media-channel-dest-port-top; - uses media-channel-psd-top; - } - } - } - - grouping wavelength-router-top { - description - "Top level grouping for the wavelength router"; - - container wavelength-router { - description - "Top-level container for wavelength router device"; - - uses media-channel-top; - } - } - - // data definition statements - - uses wavelength-router-top; - - // augment statements - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-wifi-mac.yang b/src/plugins/yang/openconfig/openconfig-wifi-mac.yang deleted file mode 100644 index 3d51215..0000000 --- a/src/plugins/yang/openconfig/openconfig-wifi-mac.yang +++ /dev/null @@ -1,1482 +0,0 @@ -module openconfig-wifi-mac { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/wifi/mac"; - - // Assign this module a prefix to be used by other modules, when imported. - prefix "oc-wifi-mac"; - - import openconfig-yang-types { prefix oc-yang; } - // OC-specific types - import openconfig-extensions { prefix oc-ext; } - import openconfig-vlan-types { prefix oc-vlan-types; } - import openconfig-inet-types { prefix oc-inet; } - import openconfig-wifi-types { prefix oc-wifi-types; } - import openconfig-types { prefix oc-types; } - - // Some required meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Model for managing MAC layer configuration of Radio interfaces."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2017-12-21" { - description - "Add mobility-domain and move/create bssid-state list for - counters."; - reference "0.2.0"; - } - - revision "2017-07-25" { - description - "Initial revision"; - reference "0.1.0"; - } - - grouping ssid-common-config { - description - "Configuration items common to all logical SSIDs."; - - leaf name { - type string; - description - "The name of the SSID."; - } - - leaf enabled { - type boolean; - default "true"; - description - "The desired operational state (up/down) of this SSID."; - } - - leaf hidden { - type boolean; - default "false"; - description - "Whether this SSID IE is hidden within Beacons."; - } - - leaf vlan-id { - type oc-vlan-types:vlan-id; - description - "Optional VLAN tag used by the SSID. When unspecified, defaults - to untagged."; - } - - leaf operating-frequency { - type identityref { - base oc-wifi-types:OPERATING_FREQUENCY; - } - default "oc-wifi-types:FREQ_2_5_GHZ"; - description - "Operating frequency of this SSID. When none specified, the default is - dual-band."; - } - - leaf-list basic-data-rates { - type identityref { - base oc-wifi-types:DATA_RATE; - } - description - "Basic data-rates for the SSID."; - } - - leaf-list supported-data-rates { - type identityref { - base oc-wifi-types:DATA_RATE; - } - description - "Supported data-rates for the SSID."; - } - // MCS rates explicitly absent, as they are typically not pruned. - - leaf broadcast-filter { - type boolean; - description - "Convert all downstream broadcast ARP to unicast - only if Station is associated to the AP. Drop packet - if Station is not associated to the AP. All other - broadcast, except DHCP, is dropped by the AP. - - DHCP Offers/ACKs are converted to Unicast, over-the-air."; - } - - leaf multicast-filter { - type boolean; - description - "Drop all downstream Multicast packets."; - } - - leaf ipv6-ndp-filter { - type boolean; - description - "Neighbor Advertisements will be cached at the AP (or WLC) - and unicast in response to Neighbor Solicitations. - - Router Advertisements, in response to a Router Solicitation - are converted to Unicast for over-the-air transmission."; - } - - leaf ipv6-ndp-filter-timer { - type uint16; - units seconds; - description - "Time, in seconds, the ndp-filter will cache - Neighbor Advertisements (NA)."; - } - - leaf station-isolation { - type boolean; - description - "Block Station peer to peer communication."; - } - - leaf opmode { - type enumeration { - enum OPEN { - description - "Open authentication."; - } - enum WPA2_PERSONAL { - description - "WPA2-Personal with PSK authentication."; - } - enum WPA2_ENTERPRISE { - description - "WPA2-Enterprise with 802.1X authentication."; - } - } - default "OPEN"; - description - "The type of Layer2 authentication in use."; - } - // Note, legacy 802.11 auth methods (ie Shared Key) explicitly absent here. - // It should never be used. - - leaf wpa2-psk { - when "../opmode = 'WPA2_PERSONAL'"; - type string { - length "8..63"; - } - description - "The passphrase used on this WPA2-Personal SSID."; - } - - leaf server-group { - when "../opmode = 'WPA2_ENTERPRISE' or ../opmode = 'WPA2_PERSONAL'"; - type string; - description - "Specifies the RADIUS server-group to be used, - as defined in the openconfig-aaa.yang model. - - Including WPA2_PERSONAL as it can be accompained by MAB."; - } - - leaf dva { - type boolean; - description - "Enable/disable Dynamic VLAN Assignment, - using 'Tunnel-Private-Group-Id' RADIUS attribute."; - } - - leaf mobility-domain { - type string; - description - "Specify the mobility domain where PMK-R0 distribution will occur. - Specifically, which APs will recieve PMK-R0 if using 802.11r (FT)."; - } - - leaf dhcp-required { - type boolean; - description - "Allow a Station to access the network only if - a DHCP exchange has occurred."; - } - - leaf qbss-load { - type boolean; - description - "Advertisement of the QBSS Load Information ELement."; - } - - leaf advertise-apname { - type boolean; - description - "Advertise the AP hostname in Beacon and Probe Resp. frames."; - } - - leaf csa { - type boolean; - default "true"; - description - "Enable/Disable 802.11h channel-switch-announcement."; - } - - leaf ptk-timeout { - type uint16; - units seconds; - description - "Time, in seconds, for the Pairwise Transient Key to be timed out."; - } - - leaf gtk-timeout { - type uint16; - units seconds; - description - "TTL for the Group Temporal Key."; - } - - leaf dot11k { - type boolean; - description - "802.11k neighbor-list enabled/disabled."; - } - - leaf okc { - type boolean; - description - "Enable/disable Opportunistic Key Caching."; - } - } - - grouping dot11v-config { - description - "802.11v configuration & state data."; - - leaf dot11v-dms { - type boolean; - description - "802.11v Directed Multicast Service enabled/disabled."; - } - - leaf dot11v-bssidle { - type boolean; - description - "802.11v BSS Max Idle enabled/disabled."; - } - - leaf dot11v-bssidle-timeout { - type uint16; - units seconds; - description - "802.11v BSS Max Idle timeout."; - } - - leaf dot11v-bsstransition { - type boolean; - description - "802.11v BSS Transition enabled/disabled."; - } - } - - grouping dot11r-config { - description - "802.11r related configuration & state data."; - - leaf dot11r { - type boolean; - description - "Enable/disable 802.11r FT."; - } - - leaf dot11r-domainid { - type uint16; - description - "Mobility Domain ID."; - } - - leaf dot11r-method { - type enumeration { - enum OVA { - description - "802.11r Over-the-AIR."; - } - enum ODS { - description - "802.11r Over-the-DS."; - } - } - default "OVA"; - description - "The type of 802.11r FT in use."; - } - - leaf dot11r-r1key-timeout { - type uint16; - units seconds; - description - "TTL for the Pairwise Master Key R1."; - } - // At present R1 Key distribution is left up to vendor. All APs in mgmnt - // subnet, all APs on WLC etc. - } - - grouping dot1x-timers-config { - description - "Configurable 802.1X timers, per ESS."; - - leaf max-auth-failures { - type uint8; - description - "Number of consecutive authentication failures, - via RADIUS Access-Reject, before Station - is blacklisted."; - } - - leaf blacklist-time { - type uint16; - units seconds; - description - "Length of time, in seconds, a Station will be - blacklisted as a result of max-auth-failures."; - } - } - - grouping wmm-config { - description - "WMM & QoS marking config, per BSS."; - - leaf trust-dscp { - type boolean; - default "true"; - description - "The AP should trust DSCP on 802.11 frames received - in this BSS."; - } - - leaf-list wmm-vo-remark { - type uint8; - max-elements 8; - description - "Allowed DSCP markings for WMM AC_VO. Remark to lowest in this list - if DSCP marking falls outside of these allowed markings. - - From 1 (min) to 8 (max) integers."; - } - - leaf-list wmm-vi-remark { - type uint8; - max-elements 8; - description - "Allowed DSCP markings for WMM AC_VI. Remark to lowest in this list - if DSCP marking falls outside of these allowed markings. - - From 1 (min) to 8 (max) integers."; - } - - leaf-list wmm-be-remark { - type uint8; - max-elements 8; - description - "Allowed DSCP markings for WMM AC_BE. Remark to lowest in this list - if DSCP marking falls outside of these allowed markings. - - From 1 (min) to 8 (max) integers."; - } - - leaf-list wmm-bk-remark { - type uint8; - max-elements 8; - description - "Allowed DSCP markings for WMM AC_BK. Remark to lowest in this list - if DSCP marking falls outside of these allowed markings. - - From 1 (min) to 8 (max) integers."; - } - } - - grouping band-steering-config { - description - "Grouping for band-steering specific configuration."; - - leaf band-steering { - type boolean; - description - "Enable/disable band-steering."; - } - - leaf steering-rssi { - type int8; - description - "Minimum RSSI a dual-band Station's Probe Request - must be heard at on a 5GHz radio, in order for - band-steering to withhold 2.4GHz Probe Responses."; - } - } - - grouping ssid-common-state { - description - "Grouping for defining ssid-specific operational state"; - - leaf bssid { - type oc-yang:mac-address; - description - "Represents the BSSID. Typically this is base-radio mac +/- in last - octet; though not strictly required."; - } - - leaf bss-channel-utilization { - type oc-types:percentage; - description - "Total 802.11 channel utilization on this BSS. The total channel - utilization should include all time periods the AP spent actively - receiving and transmitting 802.11 frames on this BSS."; - } - - leaf rx-bss-dot11-channel-utilization { - type oc-types:percentage; - description - "Rx channel utilization percent for this BSS."; - } - - leaf tx-bss-dot11-channel-utilization { - type oc-types:percentage; - description - "Tx channel utilization percent for this BSS."; - } - } - - grouping bss-common-state { - description - "Grouping for defining bss-specific operational state."; - - leaf ess { - type leafref { - path "../../../../ssids/ssid/name"; - } - description - "Name of the ESS this BSS is utilizing."; - } - - leaf num-associated-clients { - type uint8; - description - "Number of associated STAs to this BSS."; - } - } - - grouping bssid-counters-state { - description - "BSSID telemetry statistics."; - - leaf bssid { - type oc-yang:mac-address; - description - "MAC of the BSS."; - } - - container counters { - config false; - description - "BSS Counters."; - - // Rx Counters - leaf rx-mgmt { - type oc-yang:counter64; - description - "Received 802.11 Management frames."; - } - - leaf rx-control { - type oc-yang:counter64; - description - "Received 802.11 Control frames."; - } - - container rx-data-dist { - description - "The distribution of Data frame sizes in bytes of successfully - recieved AMPDU, or MPDU for non-aggregated, frames. - The distribution should characterize frame sizes starting at 64 bytes - or less with the bin size doubling for each successive bin to a - maximum of 1MB or larger, as represented in the following table: - - Lower Bound Upper Bound - 0 64 - 65 128 - 129 256 - 257 512 - 513 1024 - 1025 2048 - 2049 4096 - 4097 8192 - 8193 16384 - 16385 32768 - 32769 65536 - 65537 131072 - 131073 262144 - 262145 524288 - 524289 1048576"; - - leaf rx-0-64 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 0 to 64 Bytes."; - } - - leaf rx-65-128 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 65 to 128 Bytes."; - } - - leaf rx-129-256 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 129 to 256 Bytes."; - } - - leaf rx-257-512 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 257 to 512 Bytes."; - } - - leaf rx-513-1024 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 513 to 1024 Bytes."; - } - - leaf rx-1025-2048 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 1025 to 2048 Bytes."; - } - - leaf rx-2049-4096 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 2049 to 4096 Bytes."; - } - - leaf rx-4097-8192 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 4097 to 8192 Bytes."; - } - - leaf rx-8193-16384 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 8193 to 16384 Bytes."; - } - - leaf rx-16385-32768 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 16385 to 32768 Bytes."; - } - - leaf rx-32769-65536 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 32769 to 65536 Bytes."; - } - - leaf rx-65537-131072 { - type oc-yang:counter64; - description - "Transmitted AMPDU from 65537 to 131072 Bytes."; - } - - leaf rx-131073-262144 { - type oc-yang:counter64; - description - "Transmitted AMPDU from 131073 to 262144 Bytes."; - } - - leaf rx-262145-524288 { - type oc-yang:counter64; - description - "Transmitted AMPDU from 262145 to 524288 Bytes."; - } - - leaf rx-524289-1048576 { - type oc-yang:counter64; - description - "Transmitted AMPDU from 524289 to 1048576 Bytes."; - } - } - - container rx-data-wmm { - description - "Received 802.11 Data frames, per WMM Access Category."; - - leaf vi { - type oc-yang:counter64; - description - "Rx Data frames marked as Access Category Video."; - } - - leaf vo { - type oc-yang:counter64; - description - "Rx Data frames marked as Access Category Voice."; - } - - leaf be { - type oc-yang:counter64; - description - "Rx Data frames marked as Access Category Best Effort."; - } - - leaf bk { - type oc-yang:counter64; - description - "Rx Data frames marked as Access Category Background."; - } - } - - container rx-mcs { - description - "Received Data frames, per MCS Index. It is expected that vendors - bucketize 802.11n MCS frames in their matching 802.11ac buckets. - - Example, 802.11n MCS 15 = 802.11ac MCS 7. - 802.11n MCS 20 = 802.11ac MCS 4."; - - leaf mcs0 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 0."; - } - - leaf mcs1 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 1."; - } - - leaf mcs2 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 2."; - } - - leaf mcs3 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 3."; - } - - leaf mcs4 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 4."; - } - - leaf mcs5 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 5."; - } - - leaf mcs6 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 6."; - } - - leaf mcs7 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 7."; - } - - leaf mcs8 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 8."; - } - - leaf mcs9 { - type oc-yang:counter64; - description - "Rx Data frames at MCS 9."; - } - } - - leaf rx-retries { - type oc-yang:counter64; - description - "Total number of received frames with the Retry bit set, within this - BSS."; - } - - leaf rx-retries-data { - type oc-yang:counter64; - description - "Number of received QoS Data frames with the Retry bit set"; - } - leaf rx-retries-subframe { - type oc-yang:counter64; - description - "Aggregated MPDUs which had individual subframes that fail and require - retransmission."; - } - - leaf rx-bytes-data { - type oc-yang:counter64; - description - "Bytes received from QoS Data frames"; - } - - // Tx Counters - leaf tx-mgmt { - type oc-yang:counter64; - description - "Transmitted 802.11 Management frames."; - } - - leaf tx-control { - type oc-yang:counter64; - description - "Transmitted 802.11 Control frames."; - } - - container tx-data-dist { - description - "The distribution of Data frame sizes in bytes of successfully transmitted - AMPDU, or MPDU for non-aggregated, frames. - The distribution should characterize frame sizes starting at 64 bytes - or less with the bin size doubling for each successive bin to a - maximum of 1MB or larger, as represented in the following table: - - Lower Bound Upper Bound - 0 64 - 65 128 - 129 256 - 257 512 - 513 1024 - 1025 2048 - 2049 4096 - 4097 8192 - 8193 16384 - 16385 32768 - 32769 65536 - 65537 131072 - 131073 262144 - 262145 524288 - 524289 1048576"; - - leaf tx-0-64 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 0 to 64 Bytes."; - } - - leaf tx-65-128 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 65 to 128 Bytes."; - } - - leaf tx-129-256 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 129 to 256 Bytes."; - } - - leaf tx-257-512 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 257 to 512 Bytes."; - } - - leaf tx-513-1024 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 513 to 1024 Bytes."; - } - - leaf tx-1025-2048 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 1025 to 2048 Bytes."; - } - - leaf tx-2049-4096 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 2049 to 4096 Bytes."; - } - - leaf tx-4097-8192 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 4097 to 8192 Bytes."; - } - - leaf tx-8193-16384 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 8193 to 16384 Bytes."; - } - - leaf tx-16385-32768 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 16385 to 32768 Bytes."; - } - - leaf tx-32769-65536 { - type oc-yang:counter64; - description - "Transmitted AMPDU or MPDUs from 32769 to 65536 Bytes."; - } - - leaf tx-65537-131072 { - type oc-yang:counter64; - description - "Transmitted AMPDU from 65537 to 131072 Bytes."; - } - - leaf tx-131073-262144 { - type oc-yang:counter64; - description - "Transmitted AMPDU from 131073 to 262144 Bytes."; - } - - leaf tx-262145-524288 { - type oc-yang:counter64; - description - "Transmitted AMPDU from 262145 to 524288 Bytes."; - } - - leaf tx-524289-1048576 { - type oc-yang:counter64; - description - "Transmitted AMPDU from 524289 to 1048576 Bytes."; - } - } - - container tx-data-wmm { - description - "Transmitted QoS Data frames, per WMM AC."; - leaf vi { - type oc-yang:counter64; - description - "Tx Data frames marked as Access Category Video."; - } - - leaf vo { - type oc-yang:counter64; - description - "Tx Data frames marked as Access Category Voice."; - } - - leaf bk { - type oc-yang:counter64; - description - "Tx Data frames marked as Access Category Background."; - } - - leaf be { - type oc-yang:counter64; - description - "Tx Data frames marked as Access Category Best Effort."; - } - } - - container tx-mcs { - description - "Transmitted Data frames, per MCS Index. It is expected that vendors - bucketize 802.11n MCS frames in their matching 802.11ac buckets. - - Example, 802.11n MCS 15 = 802.11ac MCS 7. - 802.11n MCS 20 = 802.11ac MCS 4."; - - leaf mcs0 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 0."; - } - - leaf mcs1 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 1."; - } - - leaf mcs2 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 2."; - } - - leaf mcs3 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 3."; - } - - leaf mcs4 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 4."; - } - - leaf mcs5 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 5."; - } - - leaf mcs6 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 6."; - } - - leaf mcs7 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 7."; - } - - leaf mcs8 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 8."; - } - - leaf mcs9 { - type oc-yang:counter64; - description - "Tx Data frames at MCS 9."; - } - } - - leaf tx-retries { - type oc-yang:counter64; - description - "Number of frames transmitted with the Retry bit set"; - } - - leaf tx-retries-data { - type oc-yang:counter64; - description - "Number of transmitted QoS Data frames with the Retry bit set"; - } - - leaf tx-retries-subframe { - type oc-yang:counter64; - description - "Aggregated MPDUs which had individual subframes that fail and require - retransmission."; - } - - leaf tx-bytes-data { - type oc-yang:counter64; - description - "Bytes transmitted from QoS Data frames"; - } - } - } - - grouping clients-state { - description - "List of clients; followed by state data, per client."; - - leaf mac { - type oc-yang:mac-address; - description - "MAC address of the client."; - } - - container counters { - description - "Per-client counters."; - - leaf tx-bytes { - type oc-yang:counter64; - description - "Tx Bytes to this client."; - } - - leaf rx-bytes { - type oc-yang:counter64; - description - "Rx Bytes from this client."; - } - - leaf rx-retries { - type oc-yang:counter64; - description - "Rx retried frames from this client."; - } - - leaf tx-retries { - type oc-yang:counter64; - description - "Tx retried frames to this client."; - } - } - } - - grouping client-connect-state { - description - "Grouping for connection state related data, per client."; - - container state { - description - "Container for connection state related data, per client."; - - leaf client-state { - type identityref { - base oc-wifi-types:CLIENT_STATE; - } - description - "Various states a Client STA may be in."; - } - - leaf connection-time { - type uint16; - units seconds; - description - "Time, in seconds, since Client Association."; - } - - leaf username { - type string; - description - "Username of Client; can be outer-identity (if PEAP), - CN of certificate (if EAP-TLS) etc."; - } - - leaf hostname { - type string; - description - "Hostname of the client, as discovered via DHCP, mDNS - or otherwise."; - } - - leaf ipv4-address { - type oc-inet:ipv4-address; - description - "IPv4 address of the client."; - } - - leaf ipv6-address { - type oc-inet:ipv6-address; - description - "IPv6 address of the client."; - } - - leaf operating-system { - type string; - description - "Optional/if known; the OS of the client."; - } - } - } - - grouping dot11k-neighbors-state { - description - "Grouping for Client beacon reports. Requires 802.11k enabled. - See Sec. 5.2.7.1 of 802.11k-2008 Standard."; - container state { - description - "Container for Client beacon reports. Requires 802.11k enabled. - See Sec. 5.2.7.1 of 802.11k-2008 Standard."; - - leaf neighbor-bssid { - type oc-yang:mac-address; - description - "The BSSID of this neighbor."; - } - - leaf neighbor-channel { - type uint8; - description - "The channel of this neighbor."; - } - - leaf neighbor-rssi { - type int8; - description - "The RSSI of this neighbor in dBm, expressed as a negative number."; - } - - leaf neighbor-antenna { - type uint8; - description - "Antenna details for this neighbor."; - } - - leaf channel-load-report { - type uint8; - description - "Channel load, as reported by Client to AP - normalized to 255. See Sec. 10.11.9.3 of 802.11ac-2013 Spec."; - } - } - } - - grouping client-capabilities-state { - description - "Groupig for Client capabilities, as reported by Assoc. Req. or - Probe Req. frames. Capability is supported, if present."; - container state { - description - "Container for Client capabilities, as reported by Assoc. Req. or - Probe Req. frames. Capability is supported, if present."; - leaf-list client-capabilities { - type identityref { - base oc-wifi-types:CLIENT_CAPABILITIES; - } - description - "Features supported by client that are Optional - within the 802.11 specifications."; - } - - leaf-list channel-support { - type uint8; - description - "List of supported channels."; - } - } - } - - grouping client-rf-state { - description - "Grouping for RF related client state data."; - container state { - description - "Container for RF related client state data."; - - leaf rssi { - type int8; - description - "The RSSI of this client in dBm. Expressed as negative number"; - } - - leaf snr { - type uint8; - description - "The SNR of AP to Client, in dB."; - } - - leaf ss { - type uint8; - description - "Number of Spatial Streams supported by the client."; - } - - leaf phy-rate { - type uint16; - description - "Last used PHY rate of connected client."; - } - - leaf connection-mode { - type enumeration { - enum A { - description - "Client connected using 802.11a."; - } - enum B { - description - "Client connected using 802.11b."; - } - enum G { - description - "Client connected using 802.11g."; - } - enum N { - description - "Client connected using 802.11n."; - } - enum AC { - description - "Client connected using 802.11ac."; - } - } - description - "802.11 protocol used for the client's connection."; - } - - leaf frequency { - type uint8; - description - "Frequency the client is utilizing. Typically, 2.4 or 5[GHz]."; - } - } - } - - grouping clients-top { - description - "Top-level grouping for clients operational state data."; - - container clients { - description - "Top-level container for clients operational state data."; - list client { - key "mac"; - config false; - description - "List of clients per BSS."; - leaf mac { - type leafref { - path "../state/mac"; - } - config false; - description - "The clients WiFi MAC address."; - } - - container state { - config false; - description - "Client state data."; - uses clients-state; - } - - container client-rf { - config false; - description - "RF radio-data per non-AP STA."; - - uses client-rf-state; - } - - container client-capabilities { - config false; - description - "Capabilites as advertised by the Client."; - - uses client-capabilities-state; - } - - container dot11k-neighbors { - config false; - description - "80211.k nieghbor information given from the Client to - the infrastructure."; - - uses dot11k-neighbors-state; - } - - container client-connection { - config false; - description - "Connection-state and meta-data associated with the Client."; - - uses client-connect-state; - } - } - } - } - - grouping wmm-top { - description - "Top-level grouping for WMM configuration and operational - state data."; - - container wmm { - description - "Top-level container for WMM configuration and - state container."; - container config { - description - "Container for WMM configuration elements."; - uses wmm-config; - } - - container state { - config false; - description - "Container for WMM state elements."; - uses wmm-config; - } - } - } - - grouping dot11r-top { - description - "Top-level grouping for 802.11r configuration and - operational state data."; - - container dot11r { - description - "Top-level container for 802.11r configuration and - state container."; - container config { - description - "Container for 802.11r configuration elements."; - uses dot11r-config; - } - - container state { - config false; - description - "Container for 802.11r state elements."; - uses dot11r-config; - } - } - } - - grouping dot11v-top { - description - "Top-level grouping for 802.11v configuration and - operational state data."; - - container dot11v { - description - "Top-level container for 802.11v configuration and - operational state data."; - container config { - description - "Container for 802.11v configuration elements."; - uses dot11v-config; - } - - container state { - config false; - description - "Container for 802.11r state elements."; - uses dot11v-config; - } - } - } - - grouping dot1x-timers-top { - description - "Top-level grouping for dot1x configuration and - operational state data."; - - container dot1x-timers { - description - "Top-level container for dot1x configuration - and operational state data."; - container config { - description - "Container for dot1x configuration elements."; - uses dot1x-timers-config; - } - - container state { - config false; - description - "Container for dot1x state elements."; - uses dot1x-timers-config; - } - } - } - - grouping band-steering-top { - description - "Top-level grouping for band-steering configuration - and operational state data."; - - container band-steering { - description - "Top-level container for band-steering configuration - and operational state data."; - container config { - description - "Container for band-steering configuration elements."; - uses band-steering-config; - } - - container state { - config false; - description - "Container for band-steering state elements."; - uses band-steering-config; - } - } - } - - grouping bssid-counters-top { - description - "Top-level grouping for BSSID operational state data."; - - container bssids { - description - "Top-level container for BSSID operational state data."; - list bssid { - key "bssid"; - config false; - description - "List of BSSIDs."; - leaf bssid { - type leafref { - path "../state/bssid"; - } - config false; - description - "The BSSID MAC address."; - } - - container state { - config false; - description - "BSSID state data."; - - uses bss-common-state; - uses bssid-counters-state; - } - } - } - } - - grouping ssid-top { - description - "Top-level grouping for ssid configuration and operational state data."; - - container ssids { - description - "Top level container for ssids, including configuration - and state data."; - - list ssid { - key "name"; - description - "The list of named ssids on the APs."; - - leaf name { - type leafref { - path "../config/name"; - } - description - "References the configured name of the ssid"; - } - - container config { - description - "Configurable items at the global, ssid level"; - - uses ssid-common-config; - } - - container state { - config false; - description - "Operational state data at the ssid level"; - - uses ssid-common-config; - uses ssid-common-state; - } - uses wmm-top; - uses dot11r-top; - uses dot11v-top; - uses clients-top; - uses dot1x-timers-top; - uses band-steering-top; - } - } - } - uses ssid-top; - uses bssid-counters-top; -} diff --git a/src/plugins/yang/openconfig/openconfig-wifi-phy.yang b/src/plugins/yang/openconfig/openconfig-wifi-phy.yang deleted file mode 100644 index 7c4453c..0000000 --- a/src/plugins/yang/openconfig/openconfig-wifi-phy.yang +++ /dev/null @@ -1,393 +0,0 @@ -module openconfig-wifi-phy { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/wifi/phy"; - - // Assign this module a prefix to be used by other modules, when imported. - prefix "oc-wifi-phy"; - - // Imports - import openconfig-yang-types { prefix oc-yang; } - // OC-specific types - import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } - import openconfig-wifi-types { prefix oc-wifi-types; } - - // Some required meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "Model for managing PHY layer configuration of Radio interfaces."; - - oc-ext:openconfig-version "0.2.0"; - - revision "2017-12-21" { - description - "Add last-seen to neighbor-table."; - reference "0.2.0"; - } - - revision "2017-11-06" { - description - "Add SSID to neighbor-table."; - reference "0.1.1"; - } - - revision "2017-07-25" { - description - "Initial revision."; - reference "0.1.0"; - } - - // Grouping statements - grouping radio-common-config { - description - "Configuration items common to all Radio interfaces, independent - of frequency"; - - leaf id { - type uint8; - description - "Unique ID of the radio."; - } - - leaf operating-frequency { - type identityref { - base oc-wifi-types:OPERATING_FREQUENCY; - } - description - "Operating frequency of this radio."; - } - - leaf enabled { - type boolean; - default "true"; - description - "The desired operational state (up/down) of this radio interface."; - } - - leaf transmit-power { - type uint8; - units dBm; - default 9; - description - "Transmit power of the radio, in dBm."; - } - - leaf channel { - type uint8 { - range "1..165"; - } - description - "Operating channel of this radio. If using channel-bonding this - will represent the Primary 20MHz channel of the 40,80,160MHz channel."; - } - - leaf channel-width { - type uint8; - units MHz; - default 20; - description - "Operating channel-width of this radio."; - } - - leaf dca { - type boolean; - default "true"; - description - "Utilize Dynamic Channel Assignment on this Radio."; - } - - leaf-list allowed-channels { - type oc-wifi-types:channels-type; - description - "Allowed channel list for this Radio to utilize."; - } - - leaf dtp { - type boolean; - default "true"; - description - "Utilize dynamic transmit-power on this Radio."; - } - - leaf dtp-min { - when "../dtp = 'true'"; - type uint8; - default '3'; - description - "Minimum allowed transmit-power on this radio, if utilizing dtp. - Expressed in dBm."; - } - - leaf dtp-max { - when "../dtp = 'true'"; - type uint8; - default '15'; - description - "Maximum allowed transmit-power on this radio, if utilizing dtp. - Expressed in dBm."; - } - - leaf antenna-gain { - type int8; - description - "Antenna gain applied to this Radio; typically used when - external antennae connected."; - } - - leaf scanning { - type boolean; - default "true"; - description - "Whether the radio will perform off-channel scanning, to collect - neighboring RF information."; - } - - leaf scanning-interval { - type uint8; - units seconds; - description - "How often, in seconds, the radio will go off-channel to perform - scanning."; - } - - leaf scanning-dwell-time { - type uint16; - units milliseconds; - description - "Amount of time, in milliseconds, the radio will spend on a - channel during scanning-interval. If a Monitor-mode Radio, it will - cycle through scanning-allowed-channels spending this amount of time - on each."; - } - - leaf scanning-defer-clients { - type uint8; - description - "Do not perform scanning if this amount of Stations are Associated - to the Radio."; - } - - leaf scanning-defer-traffic { - type boolean; - description - "Do not perform scanning if any traffic received from an active Station - in the past 100ms marked as AC_VO or AC_VI."; - } - } - - grouping radio-common-state { - description - "Grouping for defining radio-specific operational state"; - - leaf base-radio-mac { - type oc-yang:mac-address; - description - "Represents the 'burned-in' base-radio MAC - address for the a Radio interface."; - } - - leaf dfs-hit-time { - type oc-types:timeticks64; - description - "Reports the time of the last DFS hit. The value is the timestamp - in seconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - } - - leaf channel-change-reason { - type identityref { - base oc-wifi-types:CHANGE_REASON_TYPE; - } - description - "When an Access Point changes channels, this will - provide the reason that led to the change."; - } - - leaf total-channel-utilization { - type oc-types:percentage; - description - "Total 802.11 and non-802.11 channel utilization on this Radio. The - total channel utilization should include all time periods the AP - spent actively receiving and transmitting 802.11 frames, and also - include all time spent with clear channel assessment (CCA) in a - busy state"; - } - - leaf rx-dot11-channel-utilization { - type oc-types:percentage; - description - "Received channel-utilization due to 802.11 frames"; - } - - leaf rx-noise-channel-utilization { - type oc-types:percentage; - description - "Received channel-utilization percentage due to Noise."; - } - - leaf tx-dot11-channel-utilization { - type oc-types:percentage; - description - "Transmit channel-utilization percentage."; - } - } - - grouping radio-counters-state { - description - "Radio telemetry statistics."; - container counters { - description - "A collection of radio-related statistics objects."; - - // Rx Counters - leaf failed-fcs-frames { - type oc-yang:counter64; - description - "Number of frames that failed the FCS"; - } - - // Tx Counters - leaf noise-floor { - type int8; - description - "Noise Floor, as measured by this radio."; - } - } - } - - // neighbor BSSID | SSID | RSSI | Channel | Center Channel | Last-seen - grouping neighbor-list-state { - description - "Operational state data relating to neighboring - BSSIDs and their received signal strength."; - leaf bssid { - type oc-yang:mac-address; - description - "Neighboring BSSID."; - } - - leaf ssid { - type string; - description - "The SSID of this neighboring BSSID."; - } - - leaf rssi { - type int8; - description - "The RSSI of this neighboring BSSID."; - } - - leaf channel { - type uint16; - description - "The channel of this neighboring BSSID. This is to utilize 802.11ac - nomenclature. For example, 40MHz channel 36-40 represented as - channel 38. primary-channel used to identify the primary - 20MHz channel of the neighbor."; - } - - leaf primary-channel { - type uint16; - description - "The primary 20MHz channel, if the neighbor is operating on bonded - channel."; - } - - leaf last-seen { - type oc-types:timeticks64; - description - "Reports the time this reading was taken, indicating when this neighbor - was last seen. If a cache is used, it MUST be updated instantly when a - neighbor BSS changes channels, or a new BSS is seen. The value is the - timestamp in seconds relative to the Unix Epoch - (Jan 1, 1970 00:00:00 UTC)."; - } - } - - grouping neighbor-bssid-top { - description - "Top-level grouping for neighbor table - operational state data."; - - container neighbors { - description - "Top-level container for RF neighbors."; - list neighbor { - key "bssid"; - config false; - description - "The mac address, or BSSID, of a neighbor, and - their corresponding RSSI."; - - leaf bssid { - type leafref { - path "../state/bssid"; - } - config false; - description "Reference to neighbor bssid."; - } - - container state { - config false; - description - "State container for RF neighbors."; - uses neighbor-list-state; - } - } - } - } - - grouping radio-top { - description - "Top-level grouping for radio configuration and - operational state data"; - - container radios { - description - "Top level container for radios, including configuration - and state data."; - - list radio { - key "id"; - description - "The list of radios on the device."; - - leaf id { - type leafref { - path "../config/id"; - } - description - "References the configured id of the radio"; - } - - container config { - description - "Configurable items at the global, radio interface - level"; - - uses radio-common-config; - } - - container state { - config false; - description - "Operational state data at the global radio level"; - - uses radio-common-config; - uses radio-common-state; - uses radio-counters-state; - } - uses neighbor-bssid-top; - } - } - } - uses radio-top; -} diff --git a/src/plugins/yang/openconfig/openconfig-wifi-types.yang b/src/plugins/yang/openconfig/openconfig-wifi-types.yang deleted file mode 100644 index 01bf89c..0000000 --- a/src/plugins/yang/openconfig/openconfig-wifi-types.yang +++ /dev/null @@ -1,295 +0,0 @@ -module openconfig-wifi-types { - - yang-version "1"; - - // namespace - namespace "http://openconfig.net/yang/wifi/types"; - - // Assign this module a prefix to be used by other modules, when imported. - prefix "oc-wifi-types"; - - import openconfig-extensions { prefix oc-ext; } - - // Some required meta - organization "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module contains a set of WiFi-specific type definitions - that are used in the openconfig-wifi modules. It can be - imported by any module to make use of these types."; - - oc-ext:openconfig-version "0.1.0"; - - revision "2017-07-25" { - description - "Initial revision"; - reference "0.1.0"; - } - - //typdef statements - typedef channels-type { - type uint8 { - range "1..14 | 36 | 40 | 44| 48 | 52 | 56 | 60 | 64 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | 128 | 132 | 136 | 140 | 144 | 149 | 153 | 157 | 161 | 165"; - } - description - "Type to specify all the WiFi channels available for use. This is - a superset of what may be allowed by any one particular regulatory - domain."; - } - - // identity statements - identity CLIENT_STATE { - description - "Base type to specify the current state of a Client."; - } - - identity ASSOCIATED { - base CLIENT_STATE; - description - "Client has finished 802.11 Association phase. This implies 'Open' system, - or 802.11 Authentication complete."; - } - - identity L2AUTH_REQD { - base CLIENT_STATE; - description - "Client has Assocated, but not L2 Authenticated (e.g. 802.1X)"; - } - - identity L3AUTH_REQD { - base CLIENT_STATE; - description - "Client has Assocated, but not L3 Authenticated (e.g. Captive Portal)"; - } - - identity DHCP_REQD { - base CLIENT_STATE; - description - "Client has Associated & Authenticated, but has not obtained IP address."; - } - - identity AUTHENTICATED { - base CLIENT_STATE; - description - "Client has fully Authenticated & permitted to access network resources."; - } - - identity L2AUTH_FAILURE_REJECT { - base CLIENT_STATE; - description - "L2 failure, due to RADIUS Access-Reject."; - } - - identity L2AUTH_FAILURE_TIMEOUT { - base CLIENT_STATE; - description - "L2 failure, due to RADIUS timeout."; - } - - identity L3AUTH_FAILURE { - base CLIENT_STATE; - description - "L3 failure. Could be incorrect CP credentials or higher layer - Captive Portal issues."; - } - - identity DHCP_FAILURE { - base CLIENT_STATE; - description - "Client has Associated & Authenticated but has failed to recieve an IP - address, utilizing DHCP."; - } - - identity POWERSAVE { - base CLIENT_STATE; - description - "AP has recieved a PS frame, indicating the client is currently in a - powersave state."; - } - - identity BLACKLISTED { - base CLIENT_STATE; - description - "This client has been blacklisted, through either L2 (MAC) or higher-level - (signature) mechanisms."; - } - - identity AP_STATE { - description "The Up/Down state of an AP."; - } - - identity UP { - base AP_STATE; - description - "The AP is in the up state."; - } - - identity DOWN { - base AP_STATE; - description - "The AP is in the down state."; - } - - identity UPGRADING { - base AP_STATE; - description - "The AP is in the Downgrading firmware state."; - } - - // Possible basic-rates are: 1, 2, 5.5, 6, 9, 11, 12, 18, 24, 36, 48, 54 // - identity DATA_RATE { - description "base type to specify available Data-rates."; - } - - identity RATE_1MB { - base DATA_RATE; - description "1 Mbps DSSS PHY"; - } - - identity RATE_2MB { - base DATA_RATE; - description "2 Mbps DSSS PHY"; - } - - identity RATE_5.5MB { - base DATA_RATE; - description "5.5 Mbps DSSS PHY"; - } - - identity RATE_6MB { - base DATA_RATE; - description "6 Mbps OFDM PHY"; - } - - identity RATE_9MB { - base DATA_RATE; - description "9 Mbps OFDM PHY"; - } - - identity RATE_11MB { - base DATA_RATE; - description "11 Mbps DSSS PHY"; - } - - identity RATE_12MB { - base DATA_RATE; - description "12 Mbps OFDM PHY"; - } - - identity RATE_18MB { - base DATA_RATE; - description "18 Mbps OFDM PHY"; - } - - identity RATE_24MB { - base DATA_RATE; - description "24 Mbps OFDM PHY"; - } - - identity RATE_36MB { - base DATA_RATE; - description "36 Mbps OFDM PHY"; - } - - identity RATE_48MB { - base DATA_RATE; - description "48 Mbps OFDM PHY"; - } - - identity RATE_54MB { - base DATA_RATE; - description "54 Mbps OFDM PHY"; - } - - identity OPERATING_FREQUENCY { - description "Operating frequency of a Radio or SSID."; - } - - identity FREQ_2GHZ { - base OPERATING_FREQUENCY; - description "The Radio or SSID will operate at 2.4GHz only."; - } - - identity FREQ_5GHZ { - base OPERATING_FREQUENCY; - description "The Radio or SSID will operate at 5GHz only."; - } - - identity FREQ_2_5_GHZ { - base OPERATING_FREQUENCY; - description - "The Radio or SSID will be dual-band; operating in - both 2.4 & 5GHz frequencies. - - Dual-band Radio typically refers to a Monitor-mode radio, hopping - between frequencies, dwelling for a configurable amount of time on - each frequency."; - } - - identity CLIENT_CAPABILITIES { - description - "Client capabilities, as reported by Assoc. Req. or - Probe Req. frames."; - } - - identity MU_BEAMFORMER { - base CLIENT_CAPABILITIES; - description "Whether this STA can MU-MIMO Beamform."; - } - - identity MU_BEAMFORMEE { - base CLIENT_CAPABILITIES; - description "Whether this STA can Rx MU-MIMO Beamformed frames."; - } - - identity DOT_11R { - base CLIENT_CAPABILITIES; - description - "Whether this STA supports 802.11r. Note, must be - enabled on BSS for this to be accurate."; - } - - identity DOT_11V { - base CLIENT_CAPABILITIES; - description - "Whether this STA supports 802.11v BSS Transition. Note, must - be enabled on BSS for this to be accurate; unless Probe Req. - are observied in addition to Assoc. Req."; - } - - identity CHANGE_REASON_TYPE { - description - "Base type to specify the reason an Access Point - has changed channels."; - } - identity DFS { - base CHANGE_REASON_TYPE; - description - "DFS hit occured."; - } - - identity NOISE { - base CHANGE_REASON_TYPE; - description - "Excessive amounts of non-802.11 Noise occured."; - } - - identity ERRORS { - base CHANGE_REASON_TYPE; - description - "Excessive reception of frames which - failed the FCS occured."; - } - - identity BETTER-CHANNEL { - base CHANGE_REASON_TYPE; - description - "A less utilized channel exists. eg CCI avoidance - led to this channel-change."; - } - // Extend channel-change reasons here, when applicable. -}
\ No newline at end of file |