diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fae1053..81ae5d0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -65,7 +65,9 @@ jobs: export VIRTUAL_ENV="$PWD" export TESTS_RESOURCES_DIR="$PWD"/tests/resources export YANGCATALOG_CONFIG_PATH="$TESTS_RESOURCES_DIR"/test.conf + export PYANG_EXEC=$(which pyang) sed -i "s||${TESTS_RESOURCES_DIR}|g" "$YANGCATALOG_CONFIG_PATH" + sed -i "s||${PYANG_EXEC}|g" "$YANGCATALOG_CONFIG_PATH" coverage run -am pytest coverage xml diff --git a/Dockerfile b/Dockerfile index edadbfb..7cd2a16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,32 +22,8 @@ ENV GIT_PYTHON_GIT_EXECUTABLE=/usr/bin/git ENV VIRTUAL_ENV=/module-compilation ENV PYTHONPATH=$VIRTUAL_ENV ENV CONF=$VIRTUAL_ENV/conf -ENV YANGVAR="get_config.py --section Directory-Section --key var" -ENV BACKUPDIR="get_config.py --section Directory-Section --key backup" -ENV CONFD_DIR="get_config.py --section Tool-Section --key confd-dir" -ENV PYANG="get_config.py --section Tool-Section --key pyang-exec" ENV PYANG_PLUGINPATH="/module-compilation/utility/pyang_plugin" -ENV IS_PROD="get_config.py --section General-Section --key is-prod" - -# -# Repositories -# -ENV NONIETFDIR="get_config.py --section Directory-Section --key non-ietf-directory" -ENV IETFDIR="get_config.py --section Directory-Section --key ietf-directory" -ENV MODULES="get_config.py --section Directory-Section --key modules-directory" - -# -# Working directories -# -ENV LOGS="get_config.py --section Directory-Section --key logs" -ENV TMP="get_config.py --section Directory-Section --key temp" - -# -# Where the HTML pages lie -# -ENV WEB_PRIVATE="get_config.py --section Web-Section --key private-directory" -ENV WEB_DOWNLOADABLES="get_config.py --section Web-Section --key downloadables-directory" -ENV WEB="get_config.py --section Web-Section --key public-directory" + RUN groupadd -g ${YANG_GID} -r yang && useradd --no-log-init -r -g yang -u ${YANG_ID} -d $VIRTUAL_ENV yang diff --git a/modules_compilation/compile_modules.py b/modules_compilation/compile_modules.py index 51e1e79..e811605 100755 --- a/modules_compilation/compile_modules.py +++ b/modules_compilation/compile_modules.py @@ -73,9 +73,7 @@ class Options: @dataclass class ModuleInfoForCompilation: yang_file_path: str - module_hash: str - module_hash_changed: bool - changed_validator_versions: t.Optional[list[str]] + module_hash_info: FileHasher.ModuleHashCheckForParsing yang_file_compilation_data: t.Optional[dict] previous_compilation_results: t.Optional[dict] @@ -175,15 +173,20 @@ def _compile_modules(self) -> dict: module_info_for_compilation = self._get_module_info_for_compilation(yang_file_path, file_name_and_revision) yang_file_path = module_info_for_compilation.yang_file_path yang_file_compilation_data = module_info_for_compilation.yang_file_compilation_data + module_hash_info = module_info_for_compilation.module_hash_info + changed_validator_versions = module_hash_info.get_changed_validator_versions( + self.validator_versions, + ) + module_content_changed = module_hash_info.hash_changed and not module_hash_info.only_formatting_changed if ( not module_info_for_compilation.previous_compilation_results - or module_info_for_compilation.module_hash_changed - or module_info_for_compilation.changed_validator_versions + or module_content_changed + or changed_validator_versions ): parsers_to_use, module_compilation_results = self._get_parsers_to_use_and_previous_compilation_results( module_info_for_compilation.previous_compilation_results, - module_info_for_compilation.module_hash_changed, - module_info_for_compilation.changed_validator_versions, + module_content_changed, + changed_validator_versions, ) compilation_status, module_compilation_results = self._parse_module( parsers_to_use, @@ -210,9 +213,19 @@ def _compile_modules(self) -> dict: # Revert to previous hash if compilation status is 'UNKNOWN' -> try to parse model again next time if compilation_status != 'UNKNOWN': self.file_hasher.updated_hashes[yang_file_path] = { - 'hash': module_info_for_compilation.module_hash, + 'hash': module_hash_info.hash, 'validator_versions': self.validator_versions, + 'normalized_file_hash': module_hash_info.normalized_file_hash, } + elif (module_hash_info.hash_changed and module_hash_info.only_formatting_changed) or ( + not module_hash_info.hash_changed + and not self.file_hasher.files_hashes.get(yang_file_path, {}).get('normalized_file_hash') + ): + self.file_hasher.updated_hashes[yang_file_path] = { + 'hash': module_hash_info.hash, + 'validator_versions': self.validator_versions, + 'normalized_file_hash': module_hash_info.normalized_file_hash, + } aggregated_results['all'][file_name_and_revision] = yang_file_compilation_data if module_or_submodule(yang_file_path) == 'module': aggregated_results['no_submodules'][file_name_and_revision] = yang_file_compilation_data @@ -224,35 +237,35 @@ def _get_module_info_for_compilation( file_name_and_revision: str, ) -> ModuleInfoForCompilation: all_modules_dir_yang_file_path = os.path.join(self.all_modules_dir, file_name_and_revision) - all_modules_dir_yang_file_hash_info = ( - self.file_hasher.should_parse(all_modules_dir_yang_file_path) - if os.path.exists(all_modules_dir_yang_file_path) - else None - ) yang_file_compilation_data = self.cached_compilation_results.get(file_name_and_revision, {}) module_hash_info = self.file_hasher.should_parse(yang_file_path) - if all_modules_dir_yang_file_hash_info: + if os.path.exists(all_modules_dir_yang_file_path): if yang_file_compilation_data.get('yang_file_path') == all_modules_dir_yang_file_path: - # the file has been already re-compiled with the path in all_modules_dir + # the file has been already re-compiled with the path in all_modules_dir, # so this path is the right one for this file compilation yang_file_path = all_modules_dir_yang_file_path - module_hash_info = all_modules_dir_yang_file_hash_info - elif module_hash_info.hash != all_modules_dir_yang_file_hash_info.hash: - # the file in yang_file_path isn't the right one - # and should be re-compiled with the path in all_modules_dir + module_hash_info = self.file_hasher.should_parse(all_modules_dir_yang_file_path) + elif ( + all_modules_dir_yang_file_hash := self.file_hasher.hash_file(all_modules_dir_yang_file_path) + ) != module_hash_info.hash: + # the file in yang_file_path has different content with the file in all_modules_dir, + # and should be re-compiled with the path in all_modules_dir. Normalized hashes aren't being compared + # in this situation to avoid such a case when the hashes of the yang_file_path and + # all_modules_dir_yang_file_path are different, but they are equivalent in the normalized form, + # and the hash of the all_modules_dir_yang_file_path in the normalized form is calculated everytime, + # so it's better to just use the all_modules_dir_yang_file_path and re-compile the module return self.ModuleInfoForCompilation( yang_file_path=all_modules_dir_yang_file_path, - module_hash=all_modules_dir_yang_file_hash_info.hash, - module_hash_changed=True, - changed_validator_versions=None, + module_hash_info=self.file_hasher.should_parse( + all_modules_dir_yang_file_path, + already_calculated_hash=all_modules_dir_yang_file_hash, + ), yang_file_compilation_data=None, previous_compilation_results=None, ) return self.ModuleInfoForCompilation( yang_file_path=yang_file_path, - module_hash=module_hash_info.hash, - module_hash_changed=module_hash_info.hash_changed, - changed_validator_versions=module_hash_info.get_changed_validator_versions(self.validator_versions), + module_hash_info=module_hash_info, yang_file_compilation_data=yang_file_compilation_data, previous_compilation_results=( yang_file_compilation_data.get('compilation_results') @@ -320,10 +333,10 @@ def _get_mod_rev(self, yang_file) -> str: def _get_parsers_to_use_and_previous_compilation_results( self, previous_compilation_results: t.Optional[dict], - module_hash_changed: bool, + module_content_changed: bool, changed_validator_versions: t.Optional[list[str]], ) -> tuple[dict, dict]: - if previous_compilation_results and not module_hash_changed and changed_validator_versions: + if previous_compilation_results and not module_content_changed and changed_validator_versions: parsers_to_use = { parser_name: parser_object for parser_name, parser_object in self.parsers.items() diff --git a/modules_compilation/file_hasher.py b/modules_compilation/file_hasher.py index a339448..f69d0cb 100644 --- a/modules_compilation/file_hasher.py +++ b/modules_compilation/file_hasher.py @@ -29,6 +29,7 @@ import hashlib import json import os.path +import typing as t from configparser import ConfigParser from dataclasses import dataclass @@ -41,6 +42,7 @@ class FileHasher: def __init__(self, dst_dir: str = '', force_compilation: bool = False, config: ConfigParser = create_config()): + self.config = config self.cache_dir = config.get('Directory-Section', 'cache') self.force_compilation = force_compilation self.files_hashes = self._load_hashed_files_list(dst_dir) @@ -48,7 +50,7 @@ def __init__(self, dst_dir: str = '', force_compilation: bool = False, config: C def hash_file(self, path: str) -> str: """ - Create hash from content of the given file. Each time the content of the file change, + Create hash from content of the given file. Each time the content of the file changes, the resulting hash will be different. Arguments: @@ -111,8 +113,10 @@ def dump_hashed_files_list(self, dst_dir: str = ''): @dataclass class ModuleHashCheckForParsing: hash_changed: bool + only_formatting_changed: bool hash: str validator_versions: dict + normalized_file_hash: str def get_changed_validator_versions(self, validators_to_check: dict) -> list[str]: changed_validators = [] @@ -122,20 +126,62 @@ def get_changed_validator_versions(self, validators_to_check: dict) -> list[str] changed_validators.append(validator) return changed_validators - def should_parse(self, path: str) -> ModuleHashCheckForParsing: + def should_parse(self, path: str, already_calculated_hash: t.Optional[str] = None) -> ModuleHashCheckForParsing: """ Decide whether module at the given path should be parsed or not. Check whether file content hash has changed and keep it for the future use. Argument: - :param path (str) Full path to the file to be hashed + :param path (str) Full path to the file to check hash. + :param already_calculated_hash (Optional[str]) Already calculated hash of the path, can be used if the hash + has been calculated before calling this method in order to not re-calculate the hash to improve performance, + be careful passing this argument, to not pass an incorrect hash. """ - file_hash = self.hash_file(path) + file_hash = already_calculated_hash if already_calculated_hash else self.hash_file(path) old_file_hash_info = self.files_hashes.get(path) if not old_file_hash_info or not isinstance(old_file_hash_info, dict): - return self.ModuleHashCheckForParsing(hash_changed=True, hash=file_hash, validator_versions={}) + return self.ModuleHashCheckForParsing( + hash_changed=True, + only_formatting_changed=False, + hash=file_hash, + validator_versions={}, + normalized_file_hash=self.get_normalized_file_hash(path), + ) + hash_changed = old_file_hash_info['hash'] != file_hash + old_normalized_file_hash = old_file_hash_info.get('normalized_file_hash') + new_normalized_file_hash = None + only_formatting_changed = not hash_changed + if ( + hash_changed + and old_normalized_file_hash + and (new_normalized_file_hash := self.get_normalized_file_hash(path)) == old_normalized_file_hash + ): + only_formatting_changed = True return self.ModuleHashCheckForParsing( - hash_changed=self.force_compilation or old_file_hash_info['hash'] != file_hash, + hash_changed=self.force_compilation or hash_changed, + only_formatting_changed=False if self.force_compilation else only_formatting_changed, hash=file_hash, validator_versions=old_file_hash_info['validator_versions'], + normalized_file_hash=( + old_normalized_file_hash + if (not hash_changed and old_normalized_file_hash) or (hash_changed and only_formatting_changed) + else new_normalized_file_hash + if new_normalized_file_hash + else self.get_normalized_file_hash(path) + ), ) + + def get_normalized_file_hash(self, path: str) -> str: + tmp_file_path = os.path.join(self.config.get('Directory-Section', 'temp'), os.path.basename(path)) + pyang_exec = self.config.get('Tool-Section', 'pyang-exec') + with os.popen( + ( + f'python3 {pyang_exec} -f yang -p {os.path.dirname(path)} --yang-canonical --yang-remove-comments ' + f'{path}' # TODO: --yang-join-substrings option should be added when available in pyang + ), + ) as normalized_file, open(tmp_file_path, 'w') as tmp_file: + tmp_file.write(normalized_file.read()) + del normalized_file + normalized_file_hash = self.hash_file(tmp_file_path) + os.remove(tmp_file_path) + return normalized_file_hash diff --git a/tests/README.md b/tests/README.md index 6130267..0b65349 100644 --- a/tests/README.md +++ b/tests/README.md @@ -4,7 +4,7 @@ ## HOW TO RUN - Attach to the ```yc-module-compilation``` container -- Set all the needed environment variables using: ```export PYTHONPATH="$PWD":$PYTHONPATH && export VIRTUAL_ENV="$PWD" && export TESTS_RESOURCES_DIR="$PWD"/tests/resources && export YANGCATALOG_CONFIG_PATH="$TESTS_RESOURCES_DIR"/test.conf && sed -i "s||${TESTS_RESOURCES_DIR}|g" "$YANGCATALOG_CONFIG_PATH"``` +- Set all the needed environment variables using: ```export PYTHONPATH="$PWD":$PYTHONPATH && export VIRTUAL_ENV="$PWD" && export TESTS_RESOURCES_DIR="$PWD"/tests/resources && export YANGCATALOG_CONFIG_PATH="$TESTS_RESOURCES_DIR"/test.conf && export PYANG_EXEC=$(which pyang) && sed -i "s||${TESTS_RESOURCES_DIR}|g" "$YANGCATALOG_CONFIG_PATH" && sed -i "s||${PYANG_EXEC}|g" "$YANGCATALOG_CONFIG_PATH"``` - Now you're able to run all the tests locally: - To run all the tests: ```pytest``` - To run the tests in a particular file: ```pytest tests/test_file_name.py``` diff --git a/tests/resources/cache/draft_dict.json b/tests/resources/cache/draft_dict.json index 0049f0f..622943c 100644 --- a/tests/resources/cache/draft_dict.json +++ b/tests/resources/cache/draft_dict.json @@ -1,7 +1,5 @@ { "iana-bgp-notification@2023-03-02.yang": "draft-ietf-idr-bgp-model-16.txt", "iana-hardware@2018-03-13.yang": "draft-palmero-opsawg-dmlmo-09.txt", - "iana-icmp-types@2020-09-25.yang": "draft-ietf-netmod-acl-extensions-01.txt", - "iana-qos-types@2023-03-10.yang": "draft-ietf-rtgwg-qos-model-10.txt", - "iana-ssh-key-exchange-algs@2022-06-16.yang": "draft-ietf-netconf-ssh-client-server-32.txt" + "iana-icmp-types@2020-09-25.yang": "draft-ietf-netmod-acl-extensions-01.txt" } \ No newline at end of file diff --git a/tests/resources/cache/example_dict.json b/tests/resources/cache/example_dict.json index 23b1047..de2fa5f 100644 --- a/tests/resources/cache/example_dict.json +++ b/tests/resources/cache/example_dict.json @@ -1,7 +1,5 @@ { "example-application.yang": "test_rfc_document_name.txt", "example-compb-diffserv-filter-policy@2023-03-10.yang": "test_rfc_document_name.txt", - "example-compb-queue-policy@2023-03-10.yang": "test_rfc_document_name.txt", - "example-custom-module@2022-11-03.yang": "test_rfc_document_name.txt", - "example-module@2019-06-01.yang": "test_rfc_document_name.txt" + "example-compb-queue-policy@2023-03-10.yang": "test_rfc_document_name.txt" } \ No newline at end of file diff --git a/tests/resources/cache/rfc_dict.json b/tests/resources/cache/rfc_dict.json index d271f11..e3e3ada 100644 --- a/tests/resources/cache/rfc_dict.json +++ b/tests/resources/cache/rfc_dict.json @@ -1,7 +1,5 @@ { "example-dhcpv6-opt-sip-serv@2022-06-20.yang": "test_rfc_document_name.txt", "iana-bfd-types@2021-10-21.yang": "test_rfc_document_name.txt", - "iana-crypt-hash@2014-08-06.yang": "test_rfc_document_name.txt", - "iana-dots-signal-channel@2021-09-02.yang": "test_rfc_document_name.txt", - "iana-if-type@2014-05-08.yang": "test_rfc_document_name.txt" + "iana-crypt-hash@2014-08-06.yang": "test_rfc_document_name.txt" } \ No newline at end of file diff --git a/tests/resources/compile_modules/ietf/YANG-example/example-custom-module@2022-11-03.yang b/tests/resources/compile_modules/ietf/YANG-example/example-custom-module@2022-11-03.yang deleted file mode 100644 index 4844934..0000000 --- a/tests/resources/compile_modules/ietf/YANG-example/example-custom-module@2022-11-03.yang +++ /dev/null @@ -1,50 +0,0 @@ -module example-custom-module { - yang-version 1.1; - namespace "http://example.com/example-custom-module"; - prefix "custom"; - - import ietf-https-notif-transport { - prefix "hnt"; - reference - "RFC XXXX: - An HTTPS-based Transport for Configured Subscriptions"; - } - - organization - "Example, Inc."; - - contact - "Support at example.com"; - - description - "Example of module not using Subscribed Notifications module."; - - revision "2022-11-03" { - description - "Initial Version."; - reference - "RFC XXXX: An HTTPS-based Transport for YANG Notifications."; - } - - container example-module { - description - "Example of using HTTPS notif without having to - implement Subscribed Notifications."; - - container https-receivers { - description - "A container of all HTTPS notif receivers."; - list https-receiver { - key "name"; - description - "A list of HTTPS notif receivers."; - leaf name { - type string; - description - "A unique name for the https notif receiver."; - } - uses hnt:https-receiver-grouping; - } - } - } -} diff --git a/tests/resources/compile_modules/ietf/YANG-example/example-module@2019-06-01.yang b/tests/resources/compile_modules/ietf/YANG-example/example-module@2019-06-01.yang deleted file mode 100644 index 215eea0..0000000 --- a/tests/resources/compile_modules/ietf/YANG-example/example-module@2019-06-01.yang +++ /dev/null @@ -1,37 +0,0 @@ -module example-module { - - namespace "urn:example:module"; - prefix "prefix-name"; - rev:revision-label-scheme "yangver:yang-semver"; - - import ietf-yang-revisions { prefix "rev"; } - import ietf-yang-semver { prefix "yangver"; } - - description - "to be completed"; - - revision 2019-06-01 { - rev:label 3.1.0; - description "Add new functionality."; - } - - revision 2019-03-01 { - rev:label 3.0.0; - rev:non-backwards-compatible; - description - "Add new functionality. Remove some deprecated nodes."; - } - - revision 2019-02-01 { - rev:label 2.0.0; - rev:non-backwards-compatible; - description "Apply bugfix to pattern statement"; - } - - revision 2019-01-01 { - rev:label 1.0.0; - description "Initial revision"; - } - - //YANG module definition starts here -} diff --git a/tests/resources/compile_modules/ietf/YANG-rfc/iana-dots-signal-channel@2021-09-02.yang b/tests/resources/compile_modules/ietf/YANG-rfc/iana-dots-signal-channel@2021-09-02.yang deleted file mode 100644 index d3d3b0a..0000000 --- a/tests/resources/compile_modules/ietf/YANG-rfc/iana-dots-signal-channel@2021-09-02.yang +++ /dev/null @@ -1,184 +0,0 @@ -module iana-dots-signal-channel { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:iana-dots-signal-channel"; - prefix iana-dots-signal; - - organization - "IANA"; - contact - "Internet Assigned Numbers Authority - - Postal: ICANN - 12025 Waterfront Drive, Suite 300 - Los Angeles, CA 90094-2536 - United States of America - Tel: +1 310 301 5800 - "; - description - "This module contains a collection of YANG data types defined - by IANA and used for DOTS signal channel protocol. - - Copyright (c) 2021 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 9132; see - the RFC itself for full legal notices."; - - revision 2021-09-02 { - description - "Updated the prefix used for the module."; - reference - "RFC 9132: Distributed Denial-of-Service Open Threat - Signaling (DOTS) Signal Channel Specification"; - } - - revision 2020-05-28 { - description - "Initial revision."; - reference - "RFC 8782: Distributed Denial-of-Service Open Threat - Signaling (DOTS) Signal Channel Specification"; - } - - typedef status { - type enumeration { - enum attack-mitigation-in-progress { - value 1; - description - "Attack mitigation setup is in progress (e.g., changing - the network path to reroute the inbound traffic - to DOTS mitigator)."; - } - enum attack-successfully-mitigated { - value 2; - description - "Attack is being successfully mitigated (e.g., traffic - is redirected to a DDoS mitigator and attack - traffic is dropped)."; - } - enum attack-stopped { - value 3; - description - "Attack has stopped and the DOTS client can - withdraw the mitigation request."; - } - enum attack-exceeded-capability { - value 4; - description - "Attack has exceeded the mitigation provider - capability."; - } - enum dots-client-withdrawn-mitigation { - value 5; - description - "DOTS client has withdrawn the mitigation - request and the mitigation is active but - terminating."; - } - enum attack-mitigation-terminated { - value 6; - description - "Attack mitigation is now terminated."; - } - enum attack-mitigation-withdrawn { - value 7; - description - "Attack mitigation is withdrawn."; - } - enum attack-mitigation-signal-loss { - value 8; - description - "Attack mitigation will be triggered - for the mitigation request only when - the DOTS signal channel session is lost."; - } - } - description - "Enumeration for status reported by the DOTS server."; - } - - typedef conflict-status { - type enumeration { - enum request-inactive-other-active { - value 1; - description - "DOTS server has detected conflicting mitigation - requests from different DOTS clients. - This mitigation request is currently inactive - until the conflicts are resolved. Another - mitigation request is active."; - } - enum request-active { - value 2; - description - "DOTS server has detected conflicting mitigation - requests from different DOTS clients. - This mitigation request is currently active."; - } - enum all-requests-inactive { - value 3; - description - "DOTS server has detected conflicting mitigation - requests from different DOTS clients. All - conflicting mitigation requests are inactive."; - } - } - description - "Enumeration for conflict status."; - } - - typedef conflict-cause { - type enumeration { - enum overlapping-targets { - value 1; - description - "Overlapping targets. conflict-scope provides - more details about the exact conflict."; - } - enum conflict-with-acceptlist { - value 2; - description - "Conflicts with an existing accept-list. - - This code is returned when the DDoS mitigation - detects that some of the source addresses/prefixes - listed in the accept-list ACLs are actually - attacking the target."; - } - enum cuid-collision { - value 3; - description - "Conflicts with the cuid used by another - DOTS client."; - } - } - description - "Enumeration for conflict causes."; - } - - typedef attack-status { - type enumeration { - enum under-attack { - value 1; - description - "The DOTS client determines that it is still under - attack."; - } - enum attack-successfully-mitigated { - value 2; - description - "The DOTS client determines that the attack is - successfully mitigated."; - } - } - description - "Enumeration for attack status codes."; - } -} diff --git a/tests/resources/compile_modules/ietf/YANG-rfc/iana-if-type@2014-05-08.yang b/tests/resources/compile_modules/ietf/YANG-rfc/iana-if-type@2014-05-08.yang deleted file mode 100644 index 81b2175..0000000 --- a/tests/resources/compile_modules/ietf/YANG-rfc/iana-if-type@2014-05-08.yang +++ /dev/null @@ -1,1523 +0,0 @@ -module iana-if-type { - namespace "urn:ietf:params:xml:ns:yang:iana-if-type"; - prefix ianaift; - - import ietf-interfaces { - prefix if; - } - - organization "IANA"; - contact - " Internet Assigned Numbers Authority - - Postal: ICANN - 4676 Admiralty Way, Suite 330 - Marina del Rey, CA 90292 - - Tel: +1 310 823 9358 - "; - description - "This YANG module defines YANG identities for IANA-registered - interface types. - - This YANG module is maintained by IANA and reflects the - 'ifType definitions' registry. - - The latest revision of this YANG module can be obtained from - the IANA web site. - - Requests for new values should be made to IANA via - email (iana@iana.org). - - Copyright (c) 2014 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). - - The initial version of this YANG module is part of RFC 7224; - see the RFC itself for full legal notices."; - reference - "IANA 'ifType definitions' registry. - "; - - revision 2014-05-08 { - description - "Initial revision."; - reference - "RFC 7224: IANA Interface Type YANG Module"; - } - - identity iana-interface-type { - base if:interface-type; - description - "This identity is used as a base for all interface types - defined in the 'ifType definitions' registry."; - } - - identity other { - base iana-interface-type; - } - identity regular1822 { - base iana-interface-type; - } - identity hdh1822 { - base iana-interface-type; - } - identity ddnX25 { - base iana-interface-type; - } - identity rfc877x25 { - base iana-interface-type; - reference - "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer"; - } - identity ethernetCsmacd { - base iana-interface-type; - description - "For all Ethernet-like interfaces, regardless of speed, - as per RFC 3635."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity iso88023Csmacd { - base iana-interface-type; - status deprecated; - description - "Deprecated via RFC 3635. - Use ethernetCsmacd(6) instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity iso88024TokenBus { - base iana-interface-type; - } - identity iso88025TokenRing { - base iana-interface-type; - } - identity iso88026Man { - base iana-interface-type; - } - identity starLan { - base iana-interface-type; - status deprecated; - description - "Deprecated via RFC 3635. - Use ethernetCsmacd(6) instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity proteon10Mbit { - base iana-interface-type; - } - identity proteon80Mbit { - base iana-interface-type; - } - identity hyperchannel { - base iana-interface-type; - } - identity fddi { - base iana-interface-type; - reference - "RFC 1512 - FDDI Management Information Base"; - } - identity lapb { - base iana-interface-type; - reference - "RFC 1381 - SNMP MIB Extension for X.25 LAPB"; - } - identity sdlc { - base iana-interface-type; - } - identity ds1 { - base iana-interface-type; - description - "DS1-MIB."; - reference - "RFC 4805 - Definitions of Managed Objects for the - DS1, J1, E1, DS2, and E2 Interface Types"; - } - identity e1 { - base iana-interface-type; - status obsolete; - description - "Obsolete; see DS1-MIB."; - reference - "RFC 4805 - Definitions of Managed Objects for the - DS1, J1, E1, DS2, and E2 Interface Types"; - } - - identity basicISDN { - base iana-interface-type; - description - "No longer used. See also RFC 2127."; - } - identity primaryISDN { - base iana-interface-type; - description - "No longer used. See also RFC 2127."; - } - identity propPointToPointSerial { - base iana-interface-type; - description - "Proprietary serial."; - } - identity ppp { - base iana-interface-type; - } - identity softwareLoopback { - base iana-interface-type; - } - identity eon { - base iana-interface-type; - description - "CLNP over IP."; - } - identity ethernet3Mbit { - base iana-interface-type; - } - identity nsip { - base iana-interface-type; - description - "XNS over IP."; - } - identity slip { - base iana-interface-type; - description - "Generic SLIP."; - } - identity ultra { - base iana-interface-type; - description - "Ultra Technologies."; - } - identity ds3 { - base iana-interface-type; - description - "DS3-MIB."; - reference - "RFC 3896 - Definitions of Managed Objects for the - DS3/E3 Interface Type"; - } - identity sip { - base iana-interface-type; - description - "SMDS, coffee."; - reference - "RFC 1694 - Definitions of Managed Objects for SMDS - Interfaces using SMIv2"; - } - identity frameRelay { - base iana-interface-type; - description - "DTE only."; - reference - "RFC 2115 - Management Information Base for Frame Relay - DTEs Using SMIv2"; - } - identity rs232 { - base iana-interface-type; - reference - "RFC 1659 - Definitions of Managed Objects for RS-232-like - Hardware Devices using SMIv2"; - } - identity para { - base iana-interface-type; - description - "Parallel-port."; - reference - "RFC 1660 - Definitions of Managed Objects for - Parallel-printer-like Hardware Devices using - SMIv2"; - } - identity arcnet { - base iana-interface-type; - description - "ARCnet."; - } - identity arcnetPlus { - base iana-interface-type; - description - "ARCnet Plus."; - } - - identity atm { - base iana-interface-type; - description - "ATM cells."; - } - identity miox25 { - base iana-interface-type; - reference - "RFC 1461 - SNMP MIB extension for Multiprotocol - Interconnect over X.25"; - } - identity sonet { - base iana-interface-type; - description - "SONET or SDH."; - } - identity x25ple { - base iana-interface-type; - reference - "RFC 2127 - ISDN Management Information Base using SMIv2"; - } - identity iso88022llc { - base iana-interface-type; - } - identity localTalk { - base iana-interface-type; - } - identity smdsDxi { - base iana-interface-type; - } - identity frameRelayService { - base iana-interface-type; - description - "FRNETSERV-MIB."; - reference - "RFC 2954 - Definitions of Managed Objects for Frame - Relay Service"; - } - identity v35 { - base iana-interface-type; - } - identity hssi { - base iana-interface-type; - } - identity hippi { - base iana-interface-type; - } - - identity modem { - base iana-interface-type; - description - "Generic modem."; - } - identity aal5 { - base iana-interface-type; - description - "AAL5 over ATM."; - } - identity sonetPath { - base iana-interface-type; - } - identity sonetVT { - base iana-interface-type; - } - identity smdsIcip { - base iana-interface-type; - description - "SMDS InterCarrier Interface."; - } - identity propVirtual { - base iana-interface-type; - description - "Proprietary virtual/internal."; - reference - "RFC 2863 - The Interfaces Group MIB"; - } - identity propMultiplexor { - base iana-interface-type; - description - "Proprietary multiplexing."; - reference - "RFC 2863 - The Interfaces Group MIB"; - } - identity ieee80212 { - base iana-interface-type; - description - "100BaseVG."; - } - identity fibreChannel { - base iana-interface-type; - description - "Fibre Channel."; - } - - identity hippiInterface { - base iana-interface-type; - description - "HIPPI interfaces."; - } - identity frameRelayInterconnect { - base iana-interface-type; - status obsolete; - description - "Obsolete; use either - frameRelay(32) or frameRelayService(44)."; - } - identity aflane8023 { - base iana-interface-type; - description - "ATM Emulated LAN for 802.3."; - } - identity aflane8025 { - base iana-interface-type; - description - "ATM Emulated LAN for 802.5."; - } - identity cctEmul { - base iana-interface-type; - description - "ATM Emulated circuit."; - } - identity fastEther { - base iana-interface-type; - status deprecated; - description - "Obsoleted via RFC 3635. - ethernetCsmacd(6) should be used instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity isdn { - base iana-interface-type; - description - "ISDN and X.25."; - reference - "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN - in the Packet Mode"; - } - - identity v11 { - base iana-interface-type; - description - "CCITT V.11/X.21."; - } - identity v36 { - base iana-interface-type; - description - "CCITT V.36."; - } - identity g703at64k { - base iana-interface-type; - description - "CCITT G703 at 64Kbps."; - } - identity g703at2mb { - base iana-interface-type; - status obsolete; - description - "Obsolete; see DS1-MIB."; - } - identity qllc { - base iana-interface-type; - description - "SNA QLLC."; - } - identity fastEtherFX { - base iana-interface-type; - status deprecated; - description - "Obsoleted via RFC 3635. - ethernetCsmacd(6) should be used instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity channel { - base iana-interface-type; - description - "Channel."; - } - identity ieee80211 { - base iana-interface-type; - description - "Radio spread spectrum."; - } - identity ibm370parChan { - base iana-interface-type; - description - "IBM System 360/370 OEMI Channel."; - } - identity escon { - base iana-interface-type; - description - "IBM Enterprise Systems Connection."; - } - identity dlsw { - base iana-interface-type; - description - "Data Link Switching."; - } - identity isdns { - base iana-interface-type; - description - "ISDN S/T interface."; - } - identity isdnu { - base iana-interface-type; - description - "ISDN U interface."; - } - identity lapd { - base iana-interface-type; - description - "Link Access Protocol D."; - } - identity ipSwitch { - base iana-interface-type; - description - "IP Switching Objects."; - } - identity rsrb { - base iana-interface-type; - description - "Remote Source Route Bridging."; - } - identity atmLogical { - base iana-interface-type; - description - "ATM Logical Port."; - reference - "RFC 3606 - Definitions of Supplemental Managed Objects - for ATM Interface"; - } - identity ds0 { - base iana-interface-type; - description - "Digital Signal Level 0."; - reference - "RFC 2494 - Definitions of Managed Objects for the DS0 - and DS0 Bundle Interface Type"; - } - identity ds0Bundle { - base iana-interface-type; - description - "Group of ds0s on the same ds1."; - reference - "RFC 2494 - Definitions of Managed Objects for the DS0 - and DS0 Bundle Interface Type"; - } - identity bsc { - base iana-interface-type; - description - "Bisynchronous Protocol."; - } - identity async { - base iana-interface-type; - description - "Asynchronous Protocol."; - } - identity cnr { - base iana-interface-type; - description - "Combat Net Radio."; - } - identity iso88025Dtr { - base iana-interface-type; - description - "ISO 802.5r DTR."; - } - identity eplrs { - base iana-interface-type; - description - "Ext Pos Loc Report Sys."; - } - identity arap { - base iana-interface-type; - description - "Appletalk Remote Access Protocol."; - } - identity propCnls { - base iana-interface-type; - description - "Proprietary Connectionless Protocol."; - } - identity hostPad { - base iana-interface-type; - description - "CCITT-ITU X.29 PAD Protocol."; - } - identity termPad { - base iana-interface-type; - description - "CCITT-ITU X.3 PAD Facility."; - } - identity frameRelayMPI { - base iana-interface-type; - description - "Multiproto Interconnect over FR."; - } - identity x213 { - base iana-interface-type; - description - "CCITT-ITU X213."; - } - identity adsl { - base iana-interface-type; - description - "Asymmetric Digital Subscriber Loop."; - } - identity radsl { - base iana-interface-type; - description - "Rate-Adapt. Digital Subscriber Loop."; - } - identity sdsl { - base iana-interface-type; - description - "Symmetric Digital Subscriber Loop."; - } - identity vdsl { - base iana-interface-type; - description - "Very H-Speed Digital Subscrib. Loop."; - } - identity iso88025CRFPInt { - base iana-interface-type; - description - "ISO 802.5 CRFP."; - } - identity myrinet { - base iana-interface-type; - description - "Myricom Myrinet."; - } - identity voiceEM { - base iana-interface-type; - description - "Voice recEive and transMit."; - } - identity voiceFXO { - base iana-interface-type; - description - "Voice Foreign Exchange Office."; - } - identity voiceFXS { - base iana-interface-type; - description - "Voice Foreign Exchange Station."; - } - identity voiceEncap { - base iana-interface-type; - description - "Voice encapsulation."; - } - identity voiceOverIp { - base iana-interface-type; - description - "Voice over IP encapsulation."; - } - identity atmDxi { - base iana-interface-type; - description - "ATM DXI."; - } - identity atmFuni { - base iana-interface-type; - description - "ATM FUNI."; - } - identity atmIma { - base iana-interface-type; - description - "ATM IMA."; - } - identity pppMultilinkBundle { - base iana-interface-type; - description - "PPP Multilink Bundle."; - } - identity ipOverCdlc { - base iana-interface-type; - description - "IBM ipOverCdlc."; - } - identity ipOverClaw { - base iana-interface-type; - description - "IBM Common Link Access to Workstn."; - } - identity stackToStack { - base iana-interface-type; - description - "IBM stackToStack."; - } - identity virtualIpAddress { - base iana-interface-type; - description - "IBM VIPA."; - } - identity mpc { - base iana-interface-type; - description - "IBM multi-protocol channel support."; - } - identity ipOverAtm { - base iana-interface-type; - description - "IBM ipOverAtm."; - reference - "RFC 2320 - Definitions of Managed Objects for Classical IP - and ARP Over ATM Using SMIv2 (IPOA-MIB)"; - } - identity iso88025Fiber { - base iana-interface-type; - description - "ISO 802.5j Fiber Token Ring."; - } - identity tdlc { - base iana-interface-type; - description - "IBM twinaxial data link control."; - } - identity gigabitEthernet { - base iana-interface-type; - status deprecated; - - description - "Obsoleted via RFC 3635. - ethernetCsmacd(6) should be used instead."; - reference - "RFC 3635 - Definitions of Managed Objects for the - Ethernet-like Interface Types"; - } - identity hdlc { - base iana-interface-type; - description - "HDLC."; - } - identity lapf { - base iana-interface-type; - description - "LAP F."; - } - identity v37 { - base iana-interface-type; - description - "V.37."; - } - identity x25mlp { - base iana-interface-type; - description - "Multi-Link Protocol."; - } - identity x25huntGroup { - base iana-interface-type; - description - "X25 Hunt Group."; - } - identity transpHdlc { - base iana-interface-type; - description - "Transp HDLC."; - } - identity interleave { - base iana-interface-type; - description - "Interleave channel."; - } - identity fast { - base iana-interface-type; - description - "Fast channel."; - } - - identity ip { - base iana-interface-type; - description - "IP (for APPN HPR in IP networks)."; - } - identity docsCableMaclayer { - base iana-interface-type; - description - "CATV Mac Layer."; - } - identity docsCableDownstream { - base iana-interface-type; - description - "CATV Downstream interface."; - } - identity docsCableUpstream { - base iana-interface-type; - description - "CATV Upstream interface."; - } - identity a12MppSwitch { - base iana-interface-type; - description - "Avalon Parallel Processor."; - } - identity tunnel { - base iana-interface-type; - description - "Encapsulation interface."; - } - identity coffee { - base iana-interface-type; - description - "Coffee pot."; - reference - "RFC 2325 - Coffee MIB"; - } - identity ces { - base iana-interface-type; - description - "Circuit Emulation Service."; - } - identity atmSubInterface { - base iana-interface-type; - description - "ATM Sub Interface."; - } - - identity l2vlan { - base iana-interface-type; - description - "Layer 2 Virtual LAN using 802.1Q."; - } - identity l3ipvlan { - base iana-interface-type; - description - "Layer 3 Virtual LAN using IP."; - } - identity l3ipxvlan { - base iana-interface-type; - description - "Layer 3 Virtual LAN using IPX."; - } - identity digitalPowerline { - base iana-interface-type; - description - "IP over Power Lines."; - } - identity mediaMailOverIp { - base iana-interface-type; - description - "Multimedia Mail over IP."; - } - identity dtm { - base iana-interface-type; - description - "Dynamic synchronous Transfer Mode."; - } - identity dcn { - base iana-interface-type; - description - "Data Communications Network."; - } - identity ipForward { - base iana-interface-type; - description - "IP Forwarding Interface."; - } - identity msdsl { - base iana-interface-type; - description - "Multi-rate Symmetric DSL."; - } - identity ieee1394 { - base iana-interface-type; - - description - "IEEE1394 High Performance Serial Bus."; - } - identity if-gsn { - base iana-interface-type; - description - "HIPPI-6400."; - } - identity dvbRccMacLayer { - base iana-interface-type; - description - "DVB-RCC MAC Layer."; - } - identity dvbRccDownstream { - base iana-interface-type; - description - "DVB-RCC Downstream Channel."; - } - identity dvbRccUpstream { - base iana-interface-type; - description - "DVB-RCC Upstream Channel."; - } - identity atmVirtual { - base iana-interface-type; - description - "ATM Virtual Interface."; - } - identity mplsTunnel { - base iana-interface-type; - description - "MPLS Tunnel Virtual Interface."; - } - identity srp { - base iana-interface-type; - description - "Spatial Reuse Protocol."; - } - identity voiceOverAtm { - base iana-interface-type; - description - "Voice over ATM."; - } - identity voiceOverFrameRelay { - base iana-interface-type; - description - "Voice Over Frame Relay."; - } - identity idsl { - base iana-interface-type; - description - "Digital Subscriber Loop over ISDN."; - } - identity compositeLink { - base iana-interface-type; - description - "Avici Composite Link Interface."; - } - identity ss7SigLink { - base iana-interface-type; - description - "SS7 Signaling Link."; - } - identity propWirelessP2P { - base iana-interface-type; - description - "Prop. P2P wireless interface."; - } - identity frForward { - base iana-interface-type; - description - "Frame Forward Interface."; - } - identity rfc1483 { - base iana-interface-type; - description - "Multiprotocol over ATM AAL5."; - reference - "RFC 1483 - Multiprotocol Encapsulation over ATM - Adaptation Layer 5"; - } - identity usb { - base iana-interface-type; - description - "USB Interface."; - } - identity ieee8023adLag { - base iana-interface-type; - description - "IEEE 802.3ad Link Aggregate."; - } - identity bgppolicyaccounting { - base iana-interface-type; - description - "BGP Policy Accounting."; - } - identity frf16MfrBundle { - base iana-interface-type; - description - "FRF.16 Multilink Frame Relay."; - } - identity h323Gatekeeper { - base iana-interface-type; - description - "H323 Gatekeeper."; - } - identity h323Proxy { - base iana-interface-type; - description - "H323 Voice and Video Proxy."; - } - identity mpls { - base iana-interface-type; - description - "MPLS."; - } - identity mfSigLink { - base iana-interface-type; - description - "Multi-frequency signaling link."; - } - identity hdsl2 { - base iana-interface-type; - description - "High Bit-Rate DSL - 2nd generation."; - } - identity shdsl { - base iana-interface-type; - description - "Multirate HDSL2."; - } - identity ds1FDL { - base iana-interface-type; - description - "Facility Data Link (4Kbps) on a DS1."; - } - identity pos { - base iana-interface-type; - description - "Packet over SONET/SDH Interface."; - } - - identity dvbAsiIn { - base iana-interface-type; - description - "DVB-ASI Input."; - } - identity dvbAsiOut { - base iana-interface-type; - description - "DVB-ASI Output."; - } - identity plc { - base iana-interface-type; - description - "Power Line Communications."; - } - identity nfas { - base iana-interface-type; - description - "Non-Facility Associated Signaling."; - } - identity tr008 { - base iana-interface-type; - description - "TR008."; - } - identity gr303RDT { - base iana-interface-type; - description - "Remote Digital Terminal."; - } - identity gr303IDT { - base iana-interface-type; - description - "Integrated Digital Terminal."; - } - identity isup { - base iana-interface-type; - description - "ISUP."; - } - identity propDocsWirelessMaclayer { - base iana-interface-type; - description - "Cisco proprietary Maclayer."; - } - - identity propDocsWirelessDownstream { - base iana-interface-type; - description - "Cisco proprietary Downstream."; - } - identity propDocsWirelessUpstream { - base iana-interface-type; - description - "Cisco proprietary Upstream."; - } - identity hiperlan2 { - base iana-interface-type; - description - "HIPERLAN Type 2 Radio Interface."; - } - identity propBWAp2Mp { - base iana-interface-type; - description - "PropBroadbandWirelessAccesspt2Multipt (use of this value - for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f - is deprecated, and ieee80216WMAN(237) should be used - instead)."; - } - identity sonetOverheadChannel { - base iana-interface-type; - description - "SONET Overhead Channel."; - } - identity digitalWrapperOverheadChannel { - base iana-interface-type; - description - "Digital Wrapper."; - } - identity aal2 { - base iana-interface-type; - description - "ATM adaptation layer 2."; - } - identity radioMAC { - base iana-interface-type; - description - "MAC layer over radio links."; - } - identity atmRadio { - base iana-interface-type; - description - "ATM over radio links."; - } - identity imt { - base iana-interface-type; - description - "Inter-Machine Trunks."; - } - identity mvl { - base iana-interface-type; - description - "Multiple Virtual Lines DSL."; - } - identity reachDSL { - base iana-interface-type; - description - "Long Reach DSL."; - } - identity frDlciEndPt { - base iana-interface-type; - description - "Frame Relay DLCI End Point."; - } - identity atmVciEndPt { - base iana-interface-type; - description - "ATM VCI End Point."; - } - identity opticalChannel { - base iana-interface-type; - description - "Optical Channel."; - } - identity opticalTransport { - base iana-interface-type; - description - "Optical Transport."; - } - identity propAtm { - base iana-interface-type; - description - "Proprietary ATM."; - } - identity voiceOverCable { - base iana-interface-type; - description - "Voice Over Cable Interface."; - } - - identity infiniband { - base iana-interface-type; - description - "Infiniband."; - } - identity teLink { - base iana-interface-type; - description - "TE Link."; - } - identity q2931 { - base iana-interface-type; - description - "Q.2931."; - } - identity virtualTg { - base iana-interface-type; - description - "Virtual Trunk Group."; - } - identity sipTg { - base iana-interface-type; - description - "SIP Trunk Group."; - } - identity sipSig { - base iana-interface-type; - description - "SIP Signaling."; - } - identity docsCableUpstreamChannel { - base iana-interface-type; - description - "CATV Upstream Channel."; - } - identity econet { - base iana-interface-type; - description - "Acorn Econet."; - } - identity pon155 { - base iana-interface-type; - description - "FSAN 155Mb Symetrical PON interface."; - } - - identity pon622 { - base iana-interface-type; - description - "FSAN 622Mb Symetrical PON interface."; - } - identity bridge { - base iana-interface-type; - description - "Transparent bridge interface."; - } - identity linegroup { - base iana-interface-type; - description - "Interface common to multiple lines."; - } - identity voiceEMFGD { - base iana-interface-type; - description - "Voice E&M Feature Group D."; - } - identity voiceFGDEANA { - base iana-interface-type; - description - "Voice FGD Exchange Access North American."; - } - identity voiceDID { - base iana-interface-type; - description - "Voice Direct Inward Dialing."; - } - identity mpegTransport { - base iana-interface-type; - description - "MPEG transport interface."; - } - identity sixToFour { - base iana-interface-type; - status deprecated; - description - "6to4 interface (DEPRECATED)."; - reference - "RFC 4087 - IP Tunnel MIB"; - } - identity gtp { - base iana-interface-type; - description - "GTP (GPRS Tunneling Protocol)."; - } - identity pdnEtherLoop1 { - base iana-interface-type; - description - "Paradyne EtherLoop 1."; - } - identity pdnEtherLoop2 { - base iana-interface-type; - description - "Paradyne EtherLoop 2."; - } - identity opticalChannelGroup { - base iana-interface-type; - description - "Optical Channel Group."; - } - identity homepna { - base iana-interface-type; - description - "HomePNA ITU-T G.989."; - } - identity gfp { - base iana-interface-type; - description - "Generic Framing Procedure (GFP)."; - } - identity ciscoISLvlan { - base iana-interface-type; - description - "Layer 2 Virtual LAN using Cisco ISL."; - } - identity actelisMetaLOOP { - base iana-interface-type; - description - "Acteleis proprietary MetaLOOP High Speed Link."; - } - identity fcipLink { - base iana-interface-type; - description - "FCIP Link."; - } - identity rpr { - base iana-interface-type; - description - "Resilient Packet Ring Interface Type."; - } - - identity qam { - base iana-interface-type; - description - "RF Qam Interface."; - } - identity lmp { - base iana-interface-type; - description - "Link Management Protocol."; - reference - "RFC 4327 - Link Management Protocol (LMP) Management - Information Base (MIB)"; - } - identity cblVectaStar { - base iana-interface-type; - description - "Cambridge Broadband Networks Limited VectaStar."; - } - identity docsCableMCmtsDownstream { - base iana-interface-type; - description - "CATV Modular CMTS Downstream Interface."; - } - identity adsl2 { - base iana-interface-type; - status deprecated; - description - "Asymmetric Digital Subscriber Loop Version 2 - (DEPRECATED/OBSOLETED - please use adsl2plus(238) - instead)."; - reference - "RFC 4706 - Definitions of Managed Objects for Asymmetric - Digital Subscriber Line 2 (ADSL2)"; - } - identity macSecControlledIF { - base iana-interface-type; - description - "MACSecControlled."; - } - identity macSecUncontrolledIF { - base iana-interface-type; - description - "MACSecUncontrolled."; - } - identity aviciOpticalEther { - base iana-interface-type; - description - "Avici Optical Ethernet Aggregate."; - } - identity atmbond { - base iana-interface-type; - description - "atmbond."; - } - identity voiceFGDOS { - base iana-interface-type; - description - "Voice FGD Operator Services."; - } - identity mocaVersion1 { - base iana-interface-type; - description - "MultiMedia over Coax Alliance (MoCA) Interface - as documented in information provided privately to IANA."; - } - identity ieee80216WMAN { - base iana-interface-type; - description - "IEEE 802.16 WMAN interface."; - } - identity adsl2plus { - base iana-interface-type; - description - "Asymmetric Digital Subscriber Loop Version 2 - - Version 2 Plus and all variants."; - } - identity dvbRcsMacLayer { - base iana-interface-type; - description - "DVB-RCS MAC Layer."; - reference - "RFC 5728 - The SatLabs Group DVB-RCS MIB"; - } - identity dvbTdm { - base iana-interface-type; - description - "DVB Satellite TDM."; - reference - "RFC 5728 - The SatLabs Group DVB-RCS MIB"; - } - identity dvbRcsTdma { - base iana-interface-type; - description - "DVB-RCS TDMA."; - reference - "RFC 5728 - The SatLabs Group DVB-RCS MIB"; - } - identity x86Laps { - base iana-interface-type; - description - "LAPS based on ITU-T X.86/Y.1323."; - } - identity wwanPP { - base iana-interface-type; - description - "3GPP WWAN."; - } - identity wwanPP2 { - base iana-interface-type; - description - "3GPP2 WWAN."; - } - identity voiceEBS { - base iana-interface-type; - description - "Voice P-phone EBS physical interface."; - } - identity ifPwType { - base iana-interface-type; - description - "Pseudowire interface type."; - reference - "RFC 5601 - Pseudowire (PW) Management Information Base (MIB)"; - } - identity ilan { - base iana-interface-type; - description - "Internal LAN on a bridge per IEEE 802.1ap."; - } - identity pip { - base iana-interface-type; - description - "Provider Instance Port on a bridge per IEEE 802.1ah PBB."; - } - identity aluELP { - base iana-interface-type; - description - "Alcatel-Lucent Ethernet Link Protection."; - } - identity gpon { - base iana-interface-type; - description - "Gigabit-capable passive optical networks (G-PON) as per - ITU-T G.948."; - } - identity vdsl2 { - base iana-interface-type; - description - "Very high speed digital subscriber line Version 2 - (as per ITU-T Recommendation G.993.2)."; - reference - "RFC 5650 - Definitions of Managed Objects for Very High - Speed Digital Subscriber Line 2 (VDSL2)"; - } - identity capwapDot11Profile { - base iana-interface-type; - description - "WLAN Profile Interface."; - reference - "RFC 5834 - Control and Provisioning of Wireless Access - Points (CAPWAP) Protocol Binding MIB for - IEEE 802.11"; - } - identity capwapDot11Bss { - base iana-interface-type; - description - "WLAN BSS Interface."; - reference - "RFC 5834 - Control and Provisioning of Wireless Access - Points (CAPWAP) Protocol Binding MIB for - IEEE 802.11"; - } - identity capwapWtpVirtualRadio { - base iana-interface-type; - description - "WTP Virtual Radio Interface."; - reference - "RFC 5833 - Control and Provisioning of Wireless Access - Points (CAPWAP) Protocol Base MIB"; - } - identity bits { - base iana-interface-type; - description - "bitsport."; - } - identity docsCableUpstreamRfPort { - base iana-interface-type; - description - "DOCSIS CATV Upstream RF Port."; - } - - identity cableDownstreamRfPort { - base iana-interface-type; - description - "CATV downstream RF Port."; - } - identity vmwareVirtualNic { - base iana-interface-type; - description - "VMware Virtual Network Interface."; - } - identity ieee802154 { - base iana-interface-type; - description - "IEEE 802.15.4 WPAN interface."; - reference - "IEEE 802.15.4-2006"; - } - identity otnOdu { - base iana-interface-type; - description - "OTN Optical Data Unit."; - } - identity otnOtu { - base iana-interface-type; - description - "OTN Optical channel Transport Unit."; - } - identity ifVfiType { - base iana-interface-type; - description - "VPLS Forwarding Instance Interface Type."; - } - identity g9981 { - base iana-interface-type; - description - "G.998.1 bonded interface."; - } - identity g9982 { - base iana-interface-type; - description - "G.998.2 bonded interface."; - } - identity g9983 { - base iana-interface-type; - description - "G.998.3 bonded interface."; - } - - identity aluEpon { - base iana-interface-type; - description - "Ethernet Passive Optical Networks (E-PON)."; - } - identity aluEponOnu { - base iana-interface-type; - description - "EPON Optical Network Unit."; - } - identity aluEponPhysicalUni { - base iana-interface-type; - description - "EPON physical User to Network interface."; - } - identity aluEponLogicalLink { - base iana-interface-type; - description - "The emulation of a point-to-point link over the EPON - layer."; - } - identity aluGponOnu { - base iana-interface-type; - description - "GPON Optical Network Unit."; - reference - "ITU-T G.984.2"; - } - identity aluGponPhysicalUni { - base iana-interface-type; - description - "GPON physical User to Network interface."; - reference - "ITU-T G.984.2"; - } - identity vmwareNicTeam { - base iana-interface-type; - description - "VMware NIC Team."; - } -} diff --git a/tests/resources/compile_modules/ietf/YANG/iana-qos-types@2023-03-10.yang b/tests/resources/compile_modules/ietf/YANG/iana-qos-types@2023-03-10.yang deleted file mode 100644 index e12b1bf..0000000 --- a/tests/resources/compile_modules/ietf/YANG/iana-qos-types@2023-03-10.yang +++ /dev/null @@ -1,455 +0,0 @@ -module iana-qos-types { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:iana-qos-types"; - prefix qos-types; - - organization - "IETF Routing Area Working Group"; - - contact - "WG Web: - WG List: - - Editor: Aseem Choudhary - - Editor: Mahesh Jethanandani - "; - - description - "This module contains type definitions for all QoS types. - - Copyright (c) 2022 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - - revision 2023-03-10 { - description - "Initial version"; - reference - "RFC XXXX: YANG Models for Quality of Service (QoS)."; - } - - /* - * Features. - */ - feature child-policy { - description - " This feature allows configuration of hierarchical policy."; - } - feature count { - description - "This feature allows action configuration to enable - counter in a classifier"; - } - feature named-counter { - description - "This feature allows action configuration to enable - named counter in a classifier"; - } - - /* - * Identities. - */ - identity policy-type { - description - "This base identity type defines policy-types"; - } - identity diffserv-policy-type { - base policy-type; - description - "This defines ip policy-type"; - } - identity ipv4-diffserv-policy-type { - base policy-type; - description - "This defines ipv4 policy-type"; - } - identity ipv6-diffserv-policy-type { - base policy-type; - description - "This defines ipv6 policy-type"; - } - identity queue-policy-type { - base policy-type; - description - "This defines queue policy-type"; - } - identity scheduler-policy-type { - base policy-type; - description - "This defines scheduler policy-type"; - } - - identity action-type { - description - "This base identity type defines action-types"; - } - identity dscp-marking { - base action-type; - description - "dscp marking action type"; - } - identity meter-inline { - base action-type; - description - "meter-inline action type"; - } - identity meter-reference { - base action-type; - description - "meter reference action type"; - } - identity queue { - base action-type; - description - "queue action type"; - } - identity scheduler { - base action-type; - description - "scheduler action type"; - } - identity discard { - base action-type; - description - "discard action type"; - } - identity child-policy { - if-feature child-policy; - base action-type; - description - "child-policy action type"; - } - identity count { - if-feature count; - base action-type; - description - "count action type"; - } - identity named-counter { - if-feature named-counter; - base action-type; - description - "name counter action type"; - } - identity queue-policy-name { - base action-type; - description - "queue policy name"; - } - - identity meter-type { - description - "This base identity type defines meter types"; - } - identity one-rate-two-color { - base meter-type; - description - "one rate two color meter type"; - } - identity one-rate-tri-color { - base meter-type; - description - "one rate three color meter type"; - } - identity two-rate-tri-color { - base meter-type; - description - "two rate three color meter action type"; - } - - identity drop-type { - description - "drop algorithm"; - } - identity tail-drop { - base drop-type; - description - "tail drop algorithm"; - } - identity red { - base drop-type; - description - "Random Early Detect drop algorithm"; - } - identity wred { - base drop-type; - description - "Weighted Random Early Detect drop algorithm"; - } - - identity rate-unit-type { - description - "base rate-unit type"; - } - identity bits-per-second { - base rate-unit-type; - description - "bits per second identity"; - } - identity kilo-bits-per-second { - base rate-unit-type; - description - "kilo bits per second identity"; - } - identity mega-bits-per-second { - base rate-unit-type; - description - "mega bits per second identity"; - } - identity giga-bits-per-second { - base rate-unit-type; - description - "mega bits per second identity"; - } - identity percent { - base rate-unit-type; - description - "percentage"; - } - - identity burst-unit-type { - description - "base burst-unit type"; - } - identity bytes { - base burst-unit-type; - description - "bytes"; - } - identity kilo-bytes { - base burst-unit-type; - description - "kilo bytes"; - } - identity mega-bytes { - base burst-unit-type; - description - "mega bytes"; - } - identity millisecond { - base burst-unit-type; - description - "milli seconds"; - } - identity microsecond { - base burst-unit-type; - description - "micro seconds"; - } - identity red-threshold-unit { - description - "base red-unit type"; - } - identity red-threshold-bytes { - base red-threshold-unit; - description - "bytes"; - } - identity red-threshold-kb { - base red-threshold-unit; - description - "kilo bytes"; - } - identity red-threshold-mb { - base red-threshold-unit; - description - "mega bytes"; - } - identity red-threshold-ms { - base red-threshold-unit; - description - "milli seconds"; - } - identity red-threshold-us { - base red-threshold-unit; - description - "micro seconds"; - } - identity red-threshold-pc { - base red-threshold-unit; - description - "per-centage"; - } - identity red-theshold-pt { - base red-threshold-unit; - description - "per-thousand"; - } - identity red-threshold-pm { - base red-threshold-unit; - description - "per-million"; - } - identity wred-color-type { - description - "base wred color type"; - } - identity wred-color-dscp { - base wred-color-type; - description - "dscp wred color type"; - } - - identity probability-unit { - description - "base probability unit type"; - } - identity probability-pc { - base probability-unit; - description - "probability in percentage"; - } - identity probability-pt { - base probability-unit; - description - "probability in per thousand"; - } - identity probability-pm { - base probability-unit; - description - "probability in per million"; - } - identity probability-denominator { - base probability-unit; - description - "probability value is denominator value - while numerator is always 1"; - } - - identity filter-type { - description - "This is identity of base filter-type"; - } - - identity dscp { - base filter-type; - description - "Differentiated services code point filter-type"; - } - identity source-ipv4-prefix { - base filter-type; - description - "source ipv4 prefix filter-type"; - } - identity destination-ipv4-prefix { - base filter-type; - description - "destination ipv4 prefix filter-type"; - } - identity source-ipv6-prefix { - base filter-type; - description - "source ipv6 prefix filter-type"; - } - identity destination-ipv6-prefix { - base filter-type; - description - "destination ipv6 prefix filter-type"; - } - identity source-port { - base filter-type; - description - "source port filter-type"; - } - identity destination-port { - base filter-type; - description - "destination port filter-type"; - } - identity protocol { - base filter-type; - description - "protocol type filter-type"; - } - identity traffic-group-name { - base filter-type; - description - "traffic-group filter type"; - } - identity filter-match-all { - base filter-type; - description - "Traffic-group filter type"; - } - - typedef match-operation-type { - type enumeration { - enum match-all { - description - "Classifier entry filters logical AND operation"; - } - enum match-any { - description - "Classifier entry filters logical OR operation"; - } - } - default "match-all"; - description - "Filter match logical operation type"; - } - - identity direction { - description - "This is identity of traffic direction"; - } - identity inbound { - base direction; - description - "Direction of traffic coming into the network entry"; - } - identity outbound { - base direction; - description - "Direction of traffic going out of the network entry"; - } - identity meter-action-type { - description - "Base identify for actions related to metering"; - } - identity action-drop { - base meter-action-type; - description - "Drop packets that conform/exceed/violate to the set value."; - } - identity action-transmit { - base meter-action-type; - description - "Transmit packets that conform/exceed/violate to the set - value."; - } - identity action-mark { - base meter-action-type; - description - "Mark packets that conform/exceed/violate to the set value."; - } - - identity clear-counters-type { - description - "Base identify for clear interface counters related options"; - } - identity all-counters { - base clear-counters-type; - description - "clear all counters in both directions"; - } - identity inbound-counters { - base clear-counters-type; - description - "clear counters in inbound direction"; - } - identity outbound-counters { - base clear-counters-type; - description - "clear counters in outbound direction"; - } -} diff --git a/tests/resources/compile_modules/ietf/YANG/iana-ssh-key-exchange-algs@2022-06-16.yang b/tests/resources/compile_modules/ietf/YANG/iana-ssh-key-exchange-algs@2022-06-16.yang deleted file mode 100644 index 73b1895..0000000 --- a/tests/resources/compile_modules/ietf/YANG/iana-ssh-key-exchange-algs@2022-06-16.yang +++ /dev/null @@ -1,2217 +0,0 @@ -module iana-ssh-key-exchange-algs { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs"; - prefix sshkea; - - organization - "Internet Assigned Numbers Authority (IANA)"; - - contact - "Postal: ICANN - 12025 Waterfront Drive, Suite 300 - Los Angeles, CA 90094-2536 - United States of America - Tel: +1 310 301 5800 - Email: iana@iana.org"; - - description - "This module defines identities for the key exchange algorithms - defined in the 'Key Exchange Method Names' sub-registry of the - 'Secure Shell (SSH) Protocol Parameters' registry maintained - by IANA. - - Copyright (c) 2022 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 Revised - BSD License set forth in Section 4.c of the IETF Trust's - Legal Provisions Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - The initial version of this YANG module is part of RFC EEEE - (https://www.rfc-editor.org/info/rfcEEEE); see the RFC - itself for full legal notices."; - - revision 2022-06-16 { - description - "Reflects contents of the key exchange algorithms registry - on June 16, 2022."; - reference - "RFC EEEE: YANG Groupings for SSH Clients and SSH Servers"; - } - - // Typedefs - - typedef key-exchange-algorithm-ref { - type identityref { - base "key-exchange-alg-base"; - } - description - "A reference to a SSH key exchange algorithm identifier."; - } - - // Identities - - identity key-exchange-alg-base { - description - "Base identity used to identify key exchange algorithms."; - } - - identity diffie-hellman-group-exchange-sha1 { - base key-exchange-alg-base; - status deprecated; - description - "DIFFIE-HELLMAN-GROUP-EXCHANGE-SHA1"; - reference - "RFC 4419: - Diffie-Hellman Group Exchange for the - Secure Shell (SSH) Transport Layer Protocol"; - } - - identity diffie-hellman-group-exchange-sha256 { - base key-exchange-alg-base; - description - "DIFFIE-HELLMAN-GROUP-EXCHANGE-SHA256"; - reference - "RFC 4419: - Diffie-Hellman Group Exchange for the - Secure Shell (SSH) Transport Layer Protocol"; - } - - identity diffie-hellman-group1-sha1 { - base key-exchange-alg-base; - status deprecated; - description - "DIFFIE-HELLMAN-GROUP1-SHA1"; - reference - "RFC 4253: - The Secure Shell (SSH) Transport Layer Protocol"; - } - - identity diffie-hellman-group14-sha1 { - base key-exchange-alg-base; - status deprecated; - description - "DIFFIE-HELLMAN-GROUP14-SHA1"; - reference - "RFC 4253: - The Secure Shell (SSH) Transport Layer Protocol"; - } - - identity diffie-hellman-group14-sha256 { - base key-exchange-alg-base; - status deprecated; - description - "DIFFIE-HELLMAN-GROUP14-SHA256"; - reference - "RFC 8268: - More Modular Exponentiation (MODP) Diffie-Hellman (DH) - Key Exchange (KEX) Groups for Secure Shell (SSH)"; - } - - identity diffie-hellman-group15-sha512 { - base key-exchange-alg-base; - description - "DIFFIE-HELLMAN-GROUP15-SHA512"; - reference - "RFC 8268: - More Modular Exponentiation (MODP) Diffie-Hellman (DH) - Key Exchange (KEX) Groups for Secure Shell (SSH)"; - } - - identity diffie-hellman-group16-sha512 { - base key-exchange-alg-base; - description - "DIFFIE-HELLMAN-GROUP16-SHA512"; - reference - "RFC 8268: - More Modular Exponentiation (MODP) Diffie-Hellman (DH) - Key Exchange (KEX) Groups for Secure Shell (SSH)"; - } - - identity diffie-hellman-group17-sha512 { - base key-exchange-alg-base; - description - "DIFFIE-HELLMAN-GROUP17-SHA512"; - reference - "RFC 8268: - More Modular Exponentiation (MODP) Diffie-Hellman (DH) - Key Exchange (KEX) Groups for Secure Shell (SSH)"; - } - - identity diffie-hellman-group18-sha512 { - base key-exchange-alg-base; - description - "DIFFIE-HELLMAN-GROUP18-SHA512"; - reference - "RFC 8268: - More Modular Exponentiation (MODP) Diffie-Hellman (DH) - Key Exchange (KEX) Groups for Secure Shell (SSH)"; - } - - identity ecdh-sha2-nistp256 { - base key-exchange-alg-base; - status deprecated; - description - "ECDH-SHA2-NISTP256 (secp256r1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-nistp384 { - base key-exchange-alg-base; - description - "ECDH-SHA2-NISTP384 (secp384r1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-nistp521 { - base key-exchange-alg-base; - description - "ECDH-SHA2-NISTP521 (secp521r1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.3.132.0.1 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.3.132.0.33 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.3.132.0.26 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.3.132.0.27 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.3.132.0.16 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.3.132.0.36 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.3.132.0.37 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecdh-sha2-1.3.132.0.38 { - base key-exchange-alg-base; - description - "ECDH-SHA2-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity ecmqv-sha2 { - base key-exchange-alg-base; - description - "ECMQV-SHA2"; - reference - "RFC 5656: - Elliptic Curve Algorithm Integration in the - Secure Shell Transport Layer"; - } - - identity gss-group1-sha1-nistp256 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - identity gss-group1-sha1-nistp384 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-nistp521 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.3.132.0.1 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.3.132.0.33 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.3.132.0.26 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.3.132.0.27 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.3.132.0.16 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.3.132.0.36 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.3.132.0.37 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-1.3.132.0.38 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-curve25519-sha256 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group1-sha1-curve448-sha512 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP1-SHA1-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-nistp256 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-nistp384 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-nistp521 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.3.132.0.1 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.3.132.0.33 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.3.132.0.26 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.3.132.0.27 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.3.132.0.16 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.3.132.0.36 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.3.132.0.37 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-1.3.132.0.38 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-curve25519-sha256 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha1-curve448-sha512 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GROUP14-SHA1-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-nistp256 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-nistp384 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-nistp521 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-1.3.132.0.1 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-1.3.132.0.33 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-1.3.132.0.26 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-1.3.132.0.27 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - identity gss-gex-sha1-1.3.132.0.16 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-1.3.132.0.36 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-1.3.132.0.37 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-1.3.132.0.38 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-curve25519-sha256 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-gex-sha1-curve448-sha512 { - base key-exchange-alg-base; - status deprecated; - description - "GSS-GEX-SHA1-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity rsa1024-sha1 { - base key-exchange-alg-base; - status obsolete; - description - "RSA1024-SHA1"; - reference - "RFC 4432: - RSA Key Exchange for the Secure Shell (SSH) - Transport Layer Protocol"; - } - - identity rsa2048-sha256 { - base key-exchange-alg-base; - description - "RSA2048-SHA256"; - reference - "RFC 4432: - RSA Key Exchange for the Secure Shell (SSH) - Transport Layer Protocol"; - } - - identity ext-info-s { - base key-exchange-alg-base; - description - "EXT-INFO-S"; - reference - "RFC 8308: - Extension Negotiation in the Secure Shell (SSH) Protocol"; - } - - identity ext-info-c { - base key-exchange-alg-base; - description - "EXT-INFO-C"; - reference - "RFC 8308: - Extension Negotiation in the Secure Shell (SSH) Protocol"; - } - - identity gss-group14-sha256-nistp256 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-nistp384 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-nistp521 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - identity gss-group14-sha256-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group14-sha256-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-GROUP14-SHA256-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-nistp256 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-nistp384 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-nistp521 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group15-sha512-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-GROUP15-SHA512-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-nistp256 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-nistp384 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-nistp521 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group16-sha512-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-GROUP16-SHA512-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-nistp256 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-nistp384 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-nistp521 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group17-sha512-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-GROUP17-SHA512-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-nistp256 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-nistp384 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-nistp521 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-group18-sha512-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-GROUP18-SHA512-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-nistp256 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-nistp384 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-nistp521 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp256-sha256-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-NISTP256-SHA256-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-nistp256 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-nistp384 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-nistp521 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp384-sha384-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-NISTP384-SHA384-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-nistp256 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-nistp384 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-nistp521 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-nistp521-sha512-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-NISTP521-SHA512-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-nistp256 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-nistp384 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-nistp521 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.2.840.10045.3.1.1 (nistp192, - secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - identity gss-curve25519-sha256-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve25519-sha256-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-CURVE25519-SHA256-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-nistp256 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-NISTP256 (secp256r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-nistp384 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-NISTP384 (secp384r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-nistp521 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-NISTP521 (secp521r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.3.132.0.1 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.3.132.0.1 (nistk163, sect163k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.2.840.10045.3.1.1 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.2.840.10045.3.1.1 (nistp192, secp192r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.3.132.0.33 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.3.132.0.33 (nistp224, secp224r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.3.132.0.26 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.3.132.0.26 (nistk233, sect233k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.3.132.0.27 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.3.132.0.27 (nistb233, sect233r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.3.132.0.16 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.3.132.0.16 (nistk283, sect283k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.3.132.0.36 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.3.132.0.36 (nistk409, sect409k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.3.132.0.37 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.3.132.0.37 (nistb409, sect409r1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-1.3.132.0.38 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-1.3.132.0.38 (nistt571, sect571k1)"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-curve25519-sha256 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-CURVE25519-SHA256"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity gss-curve448-sha512-curve448-sha512 { - base key-exchange-alg-base; - description - "GSS-CURVE448-SHA512-CURVE448-SHA512"; - reference - "RFC 8732: - Generic Security Service Application Program Interface - (GSS-API) Key Exchange with SHA-2"; - } - - identity curve25519-sha256 { - base key-exchange-alg-base; - description - "CURVE25519-SHA256"; - reference - "RFC 8731: - Secure Shell (SSH) Key Exchange Method - Using Curve25519 and Curve448"; - } - - identity curve448-sha512 { - base key-exchange-alg-base; - description - "CURVE448-SHA512"; - reference - "RFC 8731: - Secure Shell (SSH) Key Exchange Method - Using Curve25519 and Curve448"; - } - - // Protocol-accessible Nodes - - container supported-algorithms { - config false; - description - "A container for a list of key exchange algorithms - supported by the server."; - leaf-list supported-algorithm { - type key-exchange-algorithm-ref; - description - "A key exchange algorithm supported by the server."; - } - } - -} diff --git a/tests/resources/compile_modules/ietf/test_dir/yang-catalog@2017-07-03.yang b/tests/resources/compile_modules/ietf/test_dir/yang-catalog@2017-07-03.yang deleted file mode 100644 index 309453c..0000000 --- a/tests/resources/compile_modules/ietf/test_dir/yang-catalog@2017-07-03.yang +++ /dev/null @@ -1,378 +0,0 @@ -module yang-catalog { - namespace "urn:ietf:params:xml:ns:yang:yang-catalog"; - prefix yc; - - import ietf-yang-library { - prefix yanglib; - } - - organization - "yangcatalog.org"; - contact - "Benoit Claise - - Joe Clarke "; - description - "This module contains metadata pertinent to each YANG module, as - well as a list of vendor implementations for each module. The - structure is laid out in such a way as to make it possible to - locate metadata and vendor implementation on a per-module basis - as well as obtain a list of available modules for a given - vendor's platform and specific software release."; - - revision 2017-07-03 { - description - "Initial revision."; - reference " - YANG Catalog "; - } - - container catalog { - description - "Root container of yang-catalog holding two main branches - - modules and vendors. The modules sub-tree contains all the modules in - the catalog and all of their metadata with their implementations. - The vendor sub-tree holds modules for specific vendors, platforms, - software-versions, and software-flavors. It contains reference to a - name and revision of the module in order to reference the module's full - set of metadata."; - container modules { - description - "Container holding the list of modules"; - uses yanglib:module-list; - } // end of modules - - container vendors { - description - "Container holding lists of organizations that publish YANG modules."; - list vendor { - key name; - description - "List of organizations publishing YANG modules."; - 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, - Name of industry forum examples: - OpenConfig, OpenDaylight, ON.Lab"; - } - container platforms { - description "Container holding list of platforms."; - list platform { - key name; - description - "List of platforms under specific vendor"; - leaf name { - type string; - description - "Name of the platform"; - } - container software-versions { - description "Container holding list of versions of software versions."; - list software-version { - key name; - description - "List of version of software versions under specific vendor, platform."; - leaf name { - type string; - description - "Name of the version of software. With respect to most network device appliances, - this will be the operating system version. But for other YANG module - implementation, this would be a version of appliance software. Ultimately, - this should correspond to a version string that will be recognizable by - the consumers of the platform."; - } - container software-flavors { - description "Container holding list of software flavors."; - list software-flavor { - key name; - description - "List of software flavors under specific vendor, platform, software-version."; - leaf name { - type string; - description - "A variation of a specific version where - YANG model support may be different. Depending on the vendor, this could - be a license, additional software component, or a feature set."; - } - container protocols { - description - "List of the protocols"; - list protocol { - key name; - description - "YANG-based protocol that is used on the device. This enumeration will - is expected to be augmented to list other protocol names."; - leaf name { - type enumeration { - enum netconf { - description - "NETCONF protocol described in RFC 6241"; - } - enum restconf { - description - "RESTCONF protocol described in RFC 8040"; - } - } - description - "Name of the YANG-based protocol that is supported."; - } // end of name - leaf protocol-version { - type string; - description - "Version of the specific protocol."; - } - leaf-list capabilities { - type string; - description - "Listed name of capabilities that are - supported by the specific device."; - } - } // end of protocol - } // end of protocols - container modules { - description - "Container holding list of modules."; - list module { - key "name revision"; - description - "List of references to YANG modules under specific vendor, platform, software-version, - software-flavor. Using these references, the complete set of metadata can be - retrieved for each module."; - leaf name { - type leafref { - path "../../../../../../../../../../../modules/module/name"; - } - description - "Reference to a name of the module that is contained in specific vendor, platform, - software-version, software-flavor."; - } - leaf revision { - type leafref { - path "../../../../../../../../../../../modules/module/revision"; - } - description - "Reference to a revision of the module that is contained in specific vendor, - platform, software-version, software-flavor."; - } - } // end of list module - } // end of container modules - } // end of software-flavor - } // end of software-flavors - } // end of software-version - } // end of software-versions - } // end of platform - } // end of platforms - } // end of vendor - } // end of vendors - } //end of catalog - - augment "/catalog/modules/module" { - uses module-data; - container implementations { - description - "Container holding lists of per-module implementation details."; - list implementation{ - key "vendor platform software-version software-flavor"; - description - "List of module implementations."; - leaf vendor { - type string; - description - "Organization that created this module."; - } - leaf platform { - type string; - description - "Platform on which this module is implemented."; - } - leaf software-version { - type string; - description - "Name of the version of software. With respect to most network device appliances, - this will be the operating system version. But for other YANG module - implementation, this would be a version of appliance software. Ultimately, - this should correspond to a version string that will be recognizable by - the consumers of the platform."; - } - leaf software-flavor { - type string; - description - "A variation of a specific version where - YANG model support may be different. Depending on the vendor, this could - be a license, additional software component, or a feature set."; - } - leaf os-version { - type string; - description - "Version of the operating system using this module. This is primarily useful if - the software implementing the module is an application that requires a specific - operating system."; - } - leaf feature-set { - type string; - description - "An optional feature of the software that is required in order to implement this - module. Some form of this must be incorporated in software-version or - software-flavor, but can be broken out here for additional clarity."; - } - leaf os-type { - type string; - description - "Type of the operating system using this module. This is primarily useful if - the software implementing the module is an application that requires a - specific operating system."; - } - } - } - description - "This table augments the per-module metadata set and provides details about - vendor implementations for each module."; - } - - grouping module-data { - leaf document-name { - type string; - description - "The name of the document from which the module was extracted or taken; - or that provides additional context about the module."; - } - leaf author-email { - type string; - description - "Contact email of the author who created this module."; - } - leaf compilation-status { - type enumeration { - enum PASSED { - value 0; - description - "In case that all compilers were able to compile this YANG module without - any error/warning."; - } - enum PASSED-WITH-WARNINGS { - value 1; - description - "In case that all compilers were able to compile this YANG module without - any error, but at least one of them caught some warning."; - } - enum FAILED { - value 2; - description - "In case that at least one of compilers found some error while - compiling this YANG module."; - } - enum MISSING { - value 3; - description - "In case that there is not sufficient information about compilation status."; - } - } - description - "Status of the module, whether it was possible to compile this YANG module or - there are still some errors/warnings."; - } - leaf compilation-result { - type string; - description - "Result of the compilation explaining specifically what error or warning occurred. - This is not existing if compilation status is PASSED."; - } - leaf reference { - type string; - description - "A string that is used to specify a textual cross-reference to an external document, either - another module that defines related management information, or a document that provides - additional information relevant to this definition."; - } - leaf prefix { - type string; - description - "Statement of yang that is used to define the prefix associated with - the module and its namespace. The prefix statement's argument is - the prefix string that is used as a prefix to access a module. The - prefix string MAY be used to refer to definitions contained in the - module, e.g., if:ifName."; - } - leaf yang-version { - type string; - default "1.0"; - description - "The optional yang-version statement specifies which version of the - YANG language was used in developing the module. The statement's - argument is a string. If present, it MUST contain the value 1, - which is the current YANG version and the default value."; - } - leaf organization { - type string; - description - "This statement defines the party responsible for this - module. The argument is a string that is used to specify a textual - description of the organization(s) under whose auspices this module - was developed."; - } - leaf description { - type string; - description - "This statement takes as an argument a string that - contains a human-readable textual description of this definition. - The text is provided in a language (or languages) chosen by the - module developer; for the sake of interoperability, it is RECOMMENDED - to choose a language that is widely understood among the community of - network administrators who will use the module."; - } - leaf contact { - type string; - description - "This statement provides contact information for the module. - The argument is a string that is used to specify contact information - for the person or persons to whom technical queries concerning this - module should be sent, such as their name, postal address, telephone - number, and electronic mail address."; - } - leaf module-type { - type enumeration { - enum module { - value 0; - description "If YANG file contains module."; - } - enum submodule { - value 1; - description "If YANG file contains sub-module."; - } - } - description "Whether a file contains a YANG module or sub-module."; - } - leaf maturity-level { - type enumeration { - enum ratified { - value 0; - description - "Maturity of a module that is fully approved (e.g., a standard)."; - } - enum working-group { - value 1; - description - "Maturity of a module that is actively being developed by a organization towards ratification."; - } - enum individual { - value 2; - description - "Maturity of a module that has been initially created, but has no official - organization-level status."; - } - } - description - "The current maturity of the module with respect to the body that created it. - This allows one to understand where the module is in its overall life cycle."; - } - description - "Grouping of YANG module metadata that extends the common list defined in the YANG - Module Library (RFC 7895)."; - } -} diff --git a/tests/resources/compile_modules/ietf/test_dir/yang-catalog@2017-07-28.yang b/tests/resources/compile_modules/ietf/test_dir/yang-catalog@2017-07-28.yang deleted file mode 100644 index f7ad788..0000000 --- a/tests/resources/compile_modules/ietf/test_dir/yang-catalog@2017-07-28.yang +++ /dev/null @@ -1,737 +0,0 @@ -module yang-catalog { - namespace "urn:ietf:params:xml:ns:yang:yang-catalog"; - prefix yc; - - import ietf-yang-types { - prefix yang; - } - - import ietf-yang-library { - prefix yanglib; - } - - import ietf-inet-types { - prefix inet; - } - - organization - "yangcatalog.org"; - contact - "Benoit Claise - - Joe Clarke "; - description - "This module contains metadata pertinent to each YANG module, as - well as a list of vendor implementations for each module. The - structure is laid out in such a way as to make it possible to - locate metadata and vendor implementation on a per-module basis - as well as obtain a list of available modules for a given - vendor's platform and specific software release."; - - revision 2017-07-28 { - description - "* Revert config false nodes as we need to be able to set these via - - * Make conformance-type optional as not all vendors implement yang-library - - * Re-add the path typedef"; - reference - "YANG Catalog "; - } - revision 2017-07-26 { - description - "A number of improvements based on YANG Doctor review: - - * Remove references to 'server' in leafs describing YANG data - * Fold the augmentation module leafs directly under /catalog/modules/module - * Use identities for protocols instead of an emumeration - * Make some extractable fields 'config false' - * Fix various types - * Normalize enums to be lowercase - * Add a leaf for module-classification - * Change yang-version to be an enum - * Add module conformance, deviation and feature leafs under the implementation branches"; - reference - "YANG Catalog "; - } - revision 2017-07-14 { - description - "Modularize some of the leafs and create typedefs so they - can be shared between the API input modules."; - reference - "YANG Catalog "; - } - revision 2017-07-03 { - description - "Initial revision."; - reference " - YANG Catalog "; - } - - /* - * Identities - */ - identity protocol { - description - "Abstract base identity for a YANG-based protocol."; - } - - identity netconf { - base protocol; - description - "Protocol identity for NETCONF as described in RFC 6241."; - } - - identity restconf { - base protocol; - description - "Protocol identity for RESTCONF as described in RFC 8040."; - } - - /* - * Typedefs - */ - typedef email-address { - type string { - pattern "[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+([.][a-zA-Z0-9-]+)*"; - } - description - "This type represents a string with an email address."; - } - - typedef path { - type string { - pattern '([A-Za-z]:|[\w-]+(\.[\w-]+)*)?(([/\\][\w@.-]+)+)'; - } - description - "This type represents a string with path to the file."; - } - - container catalog { - description - "Root container of yang-catalog holding two main branches - - modules and vendors. The modules sub-tree contains all the modules in - the catalog and all of their metadata with their implementations. - The vendor sub-tree holds modules for specific vendors, platforms, - software-versions, and software-flavors. It contains reference to a - name and revision of the module in order to reference the module's full - set of metadata."; - container modules { - description - "Container holding the list of modules"; - list module { - key "name revision organization"; - description - "Each entry represents one revision of one module - for one organization."; - uses yang-lib-common-leafs; - uses yang-lib-schema-leaf; - uses catalog-module-metadata; - leaf organization { - type string; - description - "This statement defines the party responsible for this - module. The argument is a string that is used to specify a textual - description of the organization(s) under whose auspices this module - was developed."; - } - uses organization-specific-metadata; - leaf namespace { - type inet:uri; - mandatory true; - description - "The XML namespace identifier for this module."; - } - list submodule { - key "name revision"; - description - "Each entry represents one submodule within the - parent module."; - uses yang-lib-common-leafs; - uses yang-lib-schema-leaf; - } - container implementations { - description - "Container holding lists of per-module implementation details."; - list implementation{ - key "vendor platform software-version software-flavor"; - description - "List of module implementations."; - leaf vendor { - type string; - description - "Organization that implements this module."; - } - leaf platform { - type string; - description - "Platform on which this module is implemented."; - } - leaf software-version { - type string; - description - "Name of the version of software. With respect to most network device appliances, - this will be the operating system version. But for other YANG module - implementation, this would be a version of appliance software. Ultimately, - this should correspond to a version string that will be recognizable by - the consumers of the platform."; - } - leaf software-flavor { - type string; - description - "A variation of a specific version where - YANG model support may be different. Depending on the vendor, this could - be a license, additional software component, or a feature set."; - } - uses shared-implementation-leafs; - uses yang-lib-imlementation-leafs; - } - } - } - } // end of modules - - container vendors { - description - "Container holding lists of organizations that publish YANG modules."; - list vendor { - key name; - description - "List of organizations publishing YANG modules."; - 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, - Name of industry forum examples: - OpenConfig, OpenDaylight, ON.Lab"; - } - container platforms { - description "Container holding list of platforms."; - list platform { - key name; - description - "List of platforms under specific vendor"; - leaf name { - type string; - description - "Name of the platform"; - } - container software-versions { - description "Container holding list of versions of software versions."; - list software-version { - key name; - description - "List of version of software versions under specific vendor, platform."; - leaf name { - type string; - description - "Name of the version of software. With respect to most network device appliances, - this will be the operating system version. But for other YANG module - implementation, this would be a version of appliance software. Ultimately, - this should correspond to a version string that will be recognizable by - the consumers of the platform."; - } - container software-flavors { - description "Container holding list of software flavors."; - list software-flavor { - key name; - description - "List of software flavors under specific vendor, platform, software-version."; - leaf name { - type string; - description - "A variation of a specific version where - YANG model support may be different. Depending on the vendor, this could - be a license, additional software component, or a feature set."; - } - container protocols { - description - "List of the protocols"; - list protocol { - key name; - description - "YANG-based protocol that is used on the device. New identities - are expected to be added to address other YANG-based protocols."; - leaf name { - type identityref { - base protocol; - } - description - "Identity of the YANG-based protocol that is supported."; - } // end of name - leaf protocol-version { - type string; - description - "Version of the specific protocol."; - } - leaf-list capabilities { - type string; - description - "Listed name of capabilities that are - supported by the specific device."; - } - } // end of protocol - } // end of protocols - container modules { - description - "Container holding list of modules."; - list module { - key "name revision organization"; - description - "List of references to YANG modules under specific vendor, platform, software-version, - software-flavor. Using these references, the complete set of metadata can be - retrieved for each module."; - leaf name { - type leafref { - path "/catalog/modules/module/name"; - } - description - "Reference to a name of the module that is contained in specific vendor, platform, - software-version, software-flavor."; - } - leaf revision { - type leafref { - path "/catalog/modules/module/revision"; - } - description - "Reference to a revision of the module that is contained in specific vendor, - platform, software-version, software-flavor."; - } - leaf organization { - type leafref { - path "/catalog/modules/module/organization"; - } - description - "Reference to the authoring organization of the module for the implemented - module."; - } - // XXX: Do we need these here??? - uses shared-implementation-leafs; - uses yang-lib-imlementation-leafs; - } // end of list module - } // end of container modules - } // end of software-flavor - } // end of software-flavors - } // end of software-version - } // end of software-versions - } // end of platform - } // end of platforms - } // end of vendor - } // end of vendors - } //end of catalog - - grouping catalog-module-metadata { - uses shared-module-leafs; - leaf compilation-status { - type enumeration { - enum passed { - description - "All compilers were able to compile this YANG module without - any errors or warnings."; - } - enum passed-with-warnings { - description - "All compilers were able to compile this YANG module without - any errors, but at least one of them caught a warning."; - } - enum failed { - description - "At least one of compilers found an error while - compiling this YANG module."; - } - enum pending { - description - "The module was just added to the catalog and compilation testing is still - in progress."; - } - enum unknown { - description - "There is not sufficient information about compilation status. This Could - mean compilation crashed causing it not to complete fully."; - } - } - description - "Status of the module, whether it was possible to compile this YANG module or - there are still some errors/warnings."; - } - leaf compilation-result { - type string; - description - "Result of the compilation explaining specifically what error or warning occurred. - This is not existing if compilation status is PASSED."; - } - leaf prefix { - type string; - description - "Statement of yang that is used to define the prefix associated with - the module and its namespace. The prefix statement's argument is - the prefix string that is used as a prefix to access a module. The - prefix string MAY be used to refer to definitions contained in the - module, e.g., if:ifName."; - } - leaf yang-version { - type enumeration { - enum 1.0 { - description - "YANG version 1.0 as defined in RFC 6020."; - } - enum 1.1 { - description - "YANG version 1.1 as defined in RFC 7950."; - } - } - description - "The optional yang-version statement specifies which version of the - YANG language was used in developing the module."; - } - leaf description { - type string; - description - "This statement takes as an argument a string that - contains a human-readable textual description of this definition. - The text is provided in a language (or languages) chosen by the - module developer; for the sake of interoperability, it is RECOMMENDED - to choose a language that is widely understood among the community of - network administrators who will use the module."; - } - leaf contact { - type string; - description - "This statement provides contact information for the module. - The argument is a string that is used to specify contact information - for the person or persons to whom technical queries concerning this - module should be sent, such as their name, postal address, telephone - number, and electronic mail address."; - } - leaf module-type { - type enumeration { - enum module { - description "If YANG file contains module."; - } - enum submodule { - description "If YANG file contains sub-module."; - } - } - description "Whether a file contains a YANG module or sub-module."; - } - leaf tree-type { - type enumeration { - enum split { - description - "This module uses a split config/operational state layout."; - } - enum nmda-compatible { - description - "This module is compatible with the Network Management Datastores - Architecture (NMDA) and combines config and operational state nodes."; - } - enum transitional-extra { - description - "This module is derived as a '-state' module to allow for transitioning - to a full NMDA-compliant tree structure."; - } - enum openconfig { - description - "This module uses the Openconfig data element layout."; - } - enum unclassified { - description - "This module does not have a data element tree, or it does not belong to any category."; - } - enum not-applicable { - description - "This module is submodule."; - } - } - description - "The type of data element tree used by the module as it relates to the - Network Management Datastores Architecture."; - reference - "draft-dsdt-nmda-guidelines Guidelines for YANG Module Authors (NMDA)"; - } - description - "Grouping of YANG module metadata that extends the common list defined in the YANG - Module Library (RFC 7895)."; - } - - grouping organization-specific-metadata { - container ietf { - when "../organization = 'ietf'" { - description - "Include this container specific metadata of the IETF."; - } - leaf ietf-wg { - type string; - description - "Working group that authored the document containing this module."; - } - description - "Include this container for the IETF-specific organization metadata."; - } - description - "Any organization that has some specific metadata of the yang module and want them add to the - yang-catalog, should augment this grouping. This grouping is for any metadata that can`t be used for - every yang module."; - } - grouping yang-lib-common-leafs { - leaf name { - type yang:yang-identifier; - description - "The YANG module or submodule name."; - } - leaf revision { - type union { - type yanglib:revision-identifier; - type string { length 0; } - } - description - "The YANG module or submodule revision date. - A zero-length string is used if no revision statement - is present in the YANG module or submodule."; - } - description - "The YANG module or submodule revision date. - A zero-length string is used if no revision statement - is present in the YANG module or submodule."; - reference - "RFC7895 YANG Module Library : common-leafs grouping"; - } - grouping yang-lib-schema-leaf { - leaf schema { - type inet:uri; - description - "Contains a URL that represents the YANG schema - resource for this module or submodule. - This leaf will only be present if there is a URL - available for retrieval of the schema for this entry."; - } - description - "These are a subset of leafs from the yang-library (RFC 7895) that provide some - extractable fields for catalog modules. The module-list grouping cannot be - used from yang-library as modules themselves cannot have conformance without - a server."; - reference - "RFC7895 YANG Module Library : schema-leaf grouping"; - } - grouping yang-lib-imlementation-leafs { - leaf-list feature { - type yang:yang-identifier; - description - "List of YANG feature names from this module that are - supported by the server, regardless of whether they are - defined in the module or any included submodule."; - } - list deviation { - key "name revision"; - description - "List of YANG deviation module names and revisions - used by this server to modify the conformance of - the module associated with this entry. Note that - the same module can be used for deviations for - multiple modules, so the same entry MAY appear - within multiple 'module' entries. - The deviation module MUST be present in the 'module' - list, with the same name and revision values. - The 'conformance-type' value will be 'implement' for - the deviation module."; - uses yang-lib-common-leafs; - } - leaf conformance-type { - type enumeration { - enum implement { - description - "Indicates that the server implements one or more - protocol-accessible objects defined in the YANG module - identified in this entry. This includes deviation - statements defined in the module. - For YANG version 1.1 modules, there is at most one - module entry with conformance type 'implement' for a - particular module name, since YANG 1.1 requires that, - at most, one revision of a module is implemented. - For YANG version 1 modules, there SHOULD NOT be more - than one module entry for a particular module name."; - } - enum import { - description - "Indicates that the server imports reusable definitions - from the specified revision of the module but does - not implement any protocol-accessible objects from - this revision. - Multiple module entries for the same module name MAY - exist. This can occur if multiple modules import the - same module but specify different revision dates in - the import statements."; - } - } - // Removing the mandatory true for now as not all vendors may have - // this information if they do not implement yang-library. - //mandatory true; - description - "Indicates the type of conformance the server is claiming - for the YANG module identified by this entry."; - } - description - "This is a set of leafs extracted from the yang-library that are - specific to server implementations."; - reference - "RFC7895 YANG Module Library : module-list grouping"; - } - grouping shared-implementation-leafs { - leaf os-version { - type string; - description - "Version of the operating system using this module. This is primarily useful if - the software implementing the module is an application that requires a specific - operating system."; - } - leaf feature-set { - type string; - description - "An optional feature of the software that is required in order to implement this - module. Some form of this must be incorporated in software-version or - software-flavor, but can be broken out here for additional clarity."; - } - leaf os-type { - type string; - description - "Type of the operating system using this module. This is primarily useful if - the software implementing the module is an application that requires a - specific operating system."; - } - description - "Grouping of non-key leafs to be used in the module and vendor sub-trees."; - } - grouping shared-module-leafs { - leaf generated-from { - type enumeration { - enum mib { - description "Module generated from Structure of Management Information (SMI) - MIB per RFC6643."; - } - enum code { - description "Module generated automatically from code."; - } - enum not-applicable { - description - "Module was not generated but it was authored manually."; - } - enum native { - description "Module generated from platform internal or - proprietary structure."; - } - } - default not-applicable; - description - "This statement defines weather the module was generated or not. - Default value is set to not-applicable, which means that module - was created manualy and not generated."; - } - leaf maturity-level { - type enumeration { - enum ratified { - description - "Maturity of a module that is fully approved (e.g., a standard)."; - } - enum adopted { - description - "Maturity of a module that is actively being developed by a organization towards ratification."; - } - enum initial { - description - "Maturity of a module that has been initially created, but has no official - organization-level status."; - } - enum not-applicable { - description - "The maturity level is not used for vendor-supplied models, and thus all vendor - modules will have a maturity of not-applicable"; - } - } - description - "The current maturity of the module with respect to the body that created it. - This allows one to understand where the module is in its overall life cycle."; - } - leaf document-name { - type string; - description - "The name of the document from which the module was extracted or taken; - or that provides additional context about the module."; - } - leaf author-email { - type yc:email-address; - description - "Contact email of the author who is responsible for this module."; - } - leaf reference { - type inet:uri; - description - "A string that is used to specify a textual cross-reference to an external document, either - another module that defines related management information, or a document that provides - additional information relevant to this definition."; - } - leaf module-classification { - type enumeration { - enum network-service { - description - "Network Service YANG Module that describes the configuration, state - data, operations, and notifications of abstract representations of - services implemented on one or multiple network elements."; - } - enum network-element { - description - "Network Element YANG Module that describes the configuration, state - data, operations, and notifications of specific device-centric - technologies or features."; - } - enum unknown { - description - "In case that there is not sufficient information about how to classify the module."; - } - enum not-applicable { - description - "The YANG module abstraction type is neither a Network Service YANG Module - nor a Network Element YANG Module."; - } - } - mandatory true; - description - "The high-level classification of the given YANG module."; - reference - "RFC8199 YANG Module Classification"; - } - description - "These leafs are shared among the yang-catalog and its API."; - } - grouping online-source-file { - leaf owner { - type string; - mandatory true; - description - "Username or ID of the owner of the version control system repository."; - } - leaf repository { - type string; - mandatory true; - description - "The name of the repository."; - } - leaf path { - type path; - mandatory true; - description - "Location within the repository of the module file."; - } - leaf branch { - type string; - description - "Revision control system branch or tag to use to find the module. If this is not - specified, the head of the repository is used."; - } - description - "Networked version control system location of the module file."; - } -} diff --git a/tests/resources/compile_modules/ietf/test_dir_changed_content/wson-topology@2015-03-05.yang b/tests/resources/compile_modules/ietf/test_dir_changed_content/wson-topology@2015-03-05.yang new file mode 100644 index 0000000..4ad3fb1 --- /dev/null +++ b/tests/resources/compile_modules/ietf/test_dir_changed_content/wson-topology@2015-03-05.yang @@ -0,0 +1,264 @@ +module wson-topology { + namespace "urn:ietf:params:xml:ns:yang:wson-topology"; + + prefix wson; + + import ietf-inet-types { + prefix inet; + } + + organization + "IETF CCAMP Working Group"; + + contact + "Editor: Young Lee "; + + description + "This module contains a collection of YANG definitions for + RWA WSON. + + Copyright (c) 2015 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)."; + + revision 2015-03-05 { + description + "Initial revision."; + reference + "RFC XXX: A Yang Data Model for WSON Optical Networks "; + } + + typedef wson-topology-id { + type inet:uri; + description + "The WSON Topology ID"; + + } + + typedef wson-node-id { + type inet:ip-address; + description + "The WSON Node ID"; + } + + typedef wson-node-id { + type inet:ip-address; + description + "The WSON Node ID TEST"; + } + + typedef devicetype { + type enumeration { + enum adm { + value 1; + + description + "Device is ADM"; + } + enum roadm { + value 2; + description + "Device is ROAMD/OXC"; + } + } + description + "device type: fixed (ADM) or switched (ROADM/OXC)"; + } + + typedef directionality { + type enumeration { + enum bidir { + value 0; + description + "bi-directional"; + } + enum input { + value 1; + + description + "input direction"; + } + enum output { + value 2; + description + "output direction"; + } + } + description + "The directionality of link set"; + } + + typedef linkset-format { + type enumeration { + enum link-local-identifier{ + value 1; + description + ""; + } + enum local-interface-ipv4{ + value 2; + description + ""; + } + enum local-interface-ipv6{ + value 3; + description + ""; + } + } + description + "linkset type; link local/ipv4/ipv6"; + } + + typedef wson-interface-ref { + type leafref { + path "/wson-topology/wson-topology/wson-node/" + + "wson-interface/wson-interface-id"; + } + description + "This type is used by data models that need to + reference WSON interface."; + } + + container wson-topology { + description + "TBD"; + list wson-topology { + key "wson-topology-id"; + description + "The WSON Topology"; + leaf wson-topology-id { + type wson-topology-id; + description + "The WSON Topology Identifier"; + } + leaf name { + type string; + description + "TBD"; + } + + list wson-node { + key "wson-node-id"; + description + "The WSON node"; + leaf wson-node-id { + type wson-node-id; + description + "The WSON Node ID"; + } + + list wson-interface { + key "wson-interface-id"; + description + "The list of WSON Interface"; + leaf wson-interface-id { + type linkset-format; + description + "TBD"; + } + } + + leaf-list wavelength-available-bitmap { + type boolean; + description + "array of bits (i.e., bitmap) that indicates + if a wavelength is available or not on the + interface."; + } + + list connectivity-matrix { + key "matrix-id"; + description + "connectivity-matrix of WSON node"; + reference + "based on draft-ietf-ccamp-general-constraint- +encode"; + leaf matrix-id { + type uint8; + description + "matrix identifier"; + } + + leaf device-type { + type devicetype; + description + "device type: fixed (ADM) or switched + (ROADM/OXC)"; + } + leaf dir { + type directionality; + description + "bi-directionality or input or output + of link set"; + } + leaf format { + type linkset-format; + description + "format of identifier"; + } + list matrix-interface { + key "in-port-id"; + + description + "matrix-interface describes input-ports + and out-ports around a connectivity + matrix"; + + leaf in-port-id { + type wson-interface-ref; + description + "The reference to in-port"; + } + + leaf out-port-id { + type wson-interface-ref; + description + "The reference to out-port"; + } + } + } + list resource-pool { + key "resource-pool-id"; + description + "The resource pool list"; + + leaf resource-pool-id { + type uint32; + description + "The resource pool ID"; + } + leaf pool-state { + type boolean; + description + "TRUE is state UP; FALSE is state down"; + } + list matrix-interface { + key "in-port-id"; + description + "pool is described as matrix-interface + with input-ports and output-ports + around the pool"; + leaf in-port-id { + type wson-interface-ref; + description + "The reference to in-interface"; + + } + leaf out-port-id { + type wson-interface-ref; + description + "The reference to out-interface"; + } + } + } + } + } + } +} diff --git a/tests/resources/compile_modules/ietf/test_dir_changed_content/yang-catalog@2017-09-26.yang b/tests/resources/compile_modules/ietf/test_dir_changed_content/yang-catalog@2017-09-26.yang new file mode 100644 index 0000000..4f838f7 --- /dev/null +++ b/tests/resources/compile_modules/ietf/test_dir_changed_content/yang-catalog@2017-09-26.yang @@ -0,0 +1,816 @@ +module yang-catalog { + namespace "urn:ietf:params:xml:ns:yang:yang-catalog"; + prefix yc; + + import ietf-yang-types { + prefix yang; + } + import ietf-yang-library { + prefix yanglib; + } + import ietf-inet-types { + prefix inet; + } + + organization + "yangcatalog.org"; + contact + "Benoit Claise + + Joe Clarke "; + description + "This module contains metadata pertinent to each YANG module, as + well as a list of vendor implementations for each module. The + structure is laid out in such a way as to make it possible to + locate metadata and vendor implementation on a per-module basis + as well as obtain a list of available modules for a given + vendor's platform and specific software release."; + + revision 2017-09-26 { + description + "* Add leafs for tracking dependencies and dependents + * Simply the generated-from enumerated values + * Refine the type for compilation-result to be an inet:uri + * Add leafs for semantic versioning"; + reference "YANG Catalog "; + } + revision 2017-08-18 { + description + "* Reorder organization to be with the other module keys + * Add a belongs-to leaf to track a submodule's parent"; + reference "YANG Catalog "; + } + revision 2017-07-28 { + description + "* Revert config false nodes as we need to be able to set these via + + * Make conformance-type optional as not all vendors implement yang-library + + * Re-add the path typedef"; + reference "YANG Catalog "; + } + revision 2017-07-26 { + description + "A number of improvements based on YANG Doctor review: + + * Remove references to 'server' in leafs describing YANG data + * Fold the augmentation module leafs directly under /catalog/modules/module + * Use identities for protocols instead of an emumeration + * Make some extractable fields 'config false' + * Fix various types + * Normalize enums to be lowercase + * Add a leaf for module-classification + * Change yang-version to be an enum + * Add module conformance, deviation and feature leafs under the implementation branches"; + reference "YANG Catalog "; + } + revision 2017-07-14 { + description + "Modularize some of the leafs and create typedefs so they + can be shared between the API input modules."; + reference "YANG Catalog "; + } + revision 2017-07-03 { + description + "Initial revision. TEST REVISION DESCRIPTION CHANGE"; + reference + " + YANG Catalog "; + } + + /* + * Identities + */ + + identity protocol { + description + "Abstract base identity for a YANG-based protocol."; + } + + identity netconf { + base protocol; + description + "Protocol identity for NETCONF as described in RFC 6241."; + } + + identity restconf { + base protocol; + description + "Protocol identity for RESTCONF as described in RFC 8040."; + } + + /* + * Typedefs + */ + + typedef email-address { + type string { + pattern "[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+([.][a-zA-Z0-9-]+)*"; + } + description + "This type represents a string with an email address."; + } + + typedef path { + type string { + pattern "([A-Za-z]:|[\\w-]+(\\.[\\w-]+)*)?(([/\\\\][\\w@.-]+)+)"; + } + description + "This type represents a string with path to the file."; + } + + typedef semver { + type string { + pattern "[0-9]+\\.[0-9]+\\.[0-9]+"; + } + description + "A semantic version in the format of x.y.z, where: + + x = the major version number + y = the minor version number + z = the patch version number + + Changes to the major version number denote backwards-incompatible + changes between two revisions of the same module. + + Changes to the minor version number indicate there have been new + backwards-compatible features introduced in the later version of + a module. + + Changes to the patch version indicate bug fixes between two + versions of a module."; + reference "Semantic Versioning 2.0.0 "; + } + + container catalog { + description + "Root container of yang-catalog holding two main branches - + modules and vendors. The modules sub-tree contains all the modules in + the catalog and all of their metadata with their implementations. + The vendor sub-tree holds modules for specific vendors, platforms, + software-versions, and software-flavors. It contains reference to a + name and revision of the module in order to reference the module's full + set of metadata."; + container modules { + description + "Container holding the list of modules"; + list module { + key "name revision organization"; + description + "Each entry represents one revision of one module + for one organization."; + uses yang-lib-common-leafs; + leaf organization { + type string; + description + "This statement defines the party responsible for this + module. The argument is a string that is used to specify a textual + description of the organization(s) under whose auspices this module + was developed."; + } + uses organization-specific-metadata; + leaf namespace { + type inet:uri; + mandatory true; + description + "The XML namespace identifier for this module."; + } + uses yang-lib-schema-leaf; + uses catalog-module-metadata; + list submodule { + key "name revision"; + description + "Each entry represents one submodule within the + parent module."; + uses yang-lib-common-leafs; + uses yang-lib-schema-leaf; + } + list dependencies { + key "name"; + description + "Each entry represents one dependency."; + uses yang-lib-common-leafs; + uses yang-lib-schema-leaf; + } + list dependents { + key "name"; + description + "Each entry represents one dependent."; + uses yang-lib-common-leafs; + uses yang-lib-schema-leaf; + } + leaf semantic-version { + type yc:semver; + description + "The formal semantic version of a module as provided by the module + itself. If the module does not provide a semantic version, this leaf + will not be specified."; + } + leaf derived-semantic-version { + type yc:semver; + description + "The semantic version of a module as compared to other revisions of + the same module. This value is computed algorithmically by ordering + all revisions of a given module and comparing them to look for backwards + incompatible changes."; + } + container implementations { + description + "Container holding lists of per-module implementation details."; + list implementation { + key "vendor platform software-version software-flavor"; + description + "List of module implementations."; + leaf vendor { + type string; + description + "Organization that implements this module."; + } + leaf platform { + type string; + description + "Platform on which this module is implemented."; + } + leaf software-version { + type string; + description + "Name of the version of software. With respect to most network device appliances, + this will be the operating system version. But for other YANG module + implementation, this would be a version of appliance software. Ultimately, + this should correspond to a version string that will be recognizable by + the consumers of the platform."; + } + leaf software-flavor { + type string; + description + "A variation of a specific version where + YANG model support may be different. Depending on the vendor, this could + be a license, additional software component, or a feature set."; + } + uses shared-implementation-leafs; + uses yang-lib-imlementation-leafs; + } + } + } + } + container vendors { + description + "Container holding lists of organizations that publish YANG modules."; + list vendor { + key "name"; + description + "List of organizations publishing YANG modules."; + 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, + Name of industry forum examples: + OpenConfig, OpenDaylight, ON.Lab"; + } + container platforms { + description + "Container holding list of platforms."; + list platform { + key "name"; + description + "List of platforms under specific vendor"; + leaf name { + type string; + description + "Name of the platform"; + } + container software-versions { + description + "Container holding list of versions of software versions."; + list software-version { + key "name"; + description + "List of version of software versions under specific vendor, platform."; + leaf name { + type string; + description + "Name of the version of software. With respect to most network device appliances, + this will be the operating system version. But for other YANG module + implementation, this would be a version of appliance software. Ultimately, + this should correspond to a version string that will be recognizable by + the consumers of the platform."; + } + container software-flavors { + description + "Container holding list of software flavors."; + list software-flavor { + key "name"; + description + "List of software flavors under specific vendor, platform, software-version."; + leaf name { + type string; + description + "A variation of a specific version where + YANG model support may be different. Depending on the vendor, this could + be a license, additional software component, or a feature set."; + } + container protocols { + description + "List of the protocols"; + list protocol { + key "name"; + description + "YANG-based protocol that is used on the device. New identities + are expected to be added to address other YANG-based protocols."; + leaf name { + type identityref { + base yc:protocol; + } + description + "Identity of the YANG-based protocol that is supported."; + } + leaf-list protocol-version { + type string; + description + "Version of the specific protocol."; + } + leaf-list capabilities { + type string; + description + "Listed name of capabilities that are + supported by the specific device."; + } + } + } + container modules { + description + "Container holding list of modules."; + list module { + key "name revision organization"; + description + "List of references to YANG modules under specific vendor, platform, software-version, + software-flavor. Using these references, the complete set of metadata can be + retrieved for each module."; + leaf name { + type leafref { + path "/catalog/modules/module/name"; + } + description + "Reference to a name of the module that is contained in specific vendor, platform, + software-version, software-flavor."; + } + leaf revision { + type leafref { + path "/catalog/modules/module/revision"; + } + description + "Reference to a revision of the module that is contained in specific vendor, + platform, software-version, software-flavor."; + } + leaf organization { + type leafref { + path "/catalog/modules/module/organization"; + } + description + "Reference to the authoring organization of the module for the implemented + module."; + } + uses shared-implementation-leafs; + uses yang-lib-imlementation-leafs; + } + } + } + } + } + } + } + } + } + } + } + + grouping catalog-module-metadata { + uses shared-module-leafs; + leaf compilation-status { + type enumeration { + enum "passed" { + description + "All compilers were able to compile this YANG module without + any errors or warnings."; + } + enum "passed-with-warnings" { + description + "All compilers were able to compile this YANG module without + any errors, but at least one of them caught a warning."; + } + enum "failed" { + description + "At least one of compilers found an error while + compiling this YANG module."; + } + enum "pending" { + description + "The module was just added to the catalog and compilation testing is still + in progress."; + } + enum "unknown" { + description + "There is not sufficient information about compilation status. This Could + mean compilation crashed causing it not to complete fully."; + } + } + description + "Status of the module, whether it was possible to compile this YANG module or + there are still some errors/warnings."; + } + leaf compilation-result { + type inet:uri; + description + "Link to the result of the compilation explaining specifically what error or + warning occurred. This is not existing if compilation status is PASSED."; + } + leaf prefix { + type string; + description + "Statement of yang that is used to define the prefix associated with + the module and its namespace. The prefix statement's argument is + the prefix string that is used as a prefix to access a module. The + prefix string MAY be used to refer to definitions contained in the + module, e.g., if:ifName."; + } + leaf yang-version { + type enumeration { + enum "1.0" { + description + "YANG version 1.0 as defined in RFC 6020."; + } + enum "1.1" { + description + "YANG version 1.1 as defined in RFC 7950."; + } + } + description + "The optional yang-version statement specifies which version of the + YANG language was used in developing the module."; + } + leaf description { + type string; + description + "This statement takes as an argument a string that + contains a human-readable textual description of this definition. + The text is provided in a language (or languages) chosen by the + module developer; for the sake of interoperability, it is RECOMMENDED + to choose a language that is widely understood among the community of + network administrators who will use the module."; + } + leaf contact { + type string; + description + "This statement provides contact information for the module. + The argument is a string that is used to specify contact information + for the person or persons to whom technical queries concerning this + module should be sent, such as their name, postal address, telephone + number, and electronic mail address."; + } + leaf module-type { + type enumeration { + enum "module" { + description + "If YANG file contains module."; + } + enum "submodule" { + description + "If YANG file contains sub-module."; + } + } + description + "Whether a file contains a YANG module or sub-module."; + } + leaf belongs-to { + when "../module-type = 'submodule'" { + description + "Include the module's parent when it is a submodule."; + } + type yang:yang-identifier; + description + "Name of the module that includes this submodule."; + } + leaf tree-type { + type enumeration { + enum "split" { + description + "This module uses a split config/operational state layout."; + } + enum "nmda-compatible" { + description + "This module is compatible with the Network Management Datastores + Architecture (NMDA) and combines config and operational state nodes."; + } + enum "transitional-extra" { + description + "This module is derived as a '-state' module to allow for transitioning + to a full NMDA-compliant tree structure."; + } + enum "openconfig" { + description + "This module uses the Openconfig data element layout."; + } + enum "unclassified" { + description + "This module does not belong to any category or can't be determined."; + } + enum "not-applicable" { + description + "This module is not applicable. For example, because the YANG module only contains typedefs, groupings, or is a submodule"; + } + } + description + "The type of data element tree used by the module as it relates to the + Network Management Datastores Architecture."; + reference "draft-dsdt-nmda-guidelines Guidelines for YANG Module Authors (NMDA)"; + } + description + "Grouping of YANG module metadata that extends the common list defined in the YANG + Module Library (RFC 7895)."; + } + + grouping organization-specific-metadata { + container ietf { + when "../organization = 'ietf'" { + description + "Include this container specific metadata of the IETF."; + } + leaf ietf-wg { + type string; + description + "Working group that authored the document containing this module."; + } + description + "Include this container for the IETF-specific organization metadata."; + } + description + "Any organization that has some specific metadata of the yang module and want them add to the + yang-catalog, should augment this grouping. This grouping is for any metadata that can`t be used for + every yang module."; + } + + grouping yang-lib-common-leafs { + leaf name { + type yang:yang-identifier; + description + "The YANG module or submodule name."; + } + leaf revision { + type union { + type yanglib:revision-identifier; + type string { + length "0"; + } + } + description + "The YANG module or submodule revision date. + A zero-length string is used if no revision statement + is present in the YANG module or submodule."; + } + description + "The YANG module or submodule revision date. + A zero-length string is used if no revision statement + is present in the YANG module or submodule."; + reference "RFC7895 YANG Module Library : common-leafs grouping"; + } + + grouping yang-lib-schema-leaf { + leaf schema { + type inet:uri; + description + "Contains a URL that represents the YANG schema + resource for this module or submodule. + This leaf will only be present if there is a URL + available for retrieval of the schema for this entry."; + } + description + "These are a subset of leafs from the yang-library (RFC 7895) that provide some + extractable fields for catalog modules. The module-list grouping cannot be + used from yang-library as modules themselves cannot have conformance without + a server."; + reference "RFC7895 YANG Module Library : schema-leaf grouping"; + } + + grouping yang-lib-imlementation-leafs { + leaf-list feature { + type yang:yang-identifier; + description + "List of YANG feature names from this module that are + supported by the server, regardless of whether they are + defined in the module or any included submodule."; + } + list deviation { + key "name revision"; + description + "List of YANG deviation module names and revisions + used by this server to modify the conformance of + the module associated with this entry. Note that + the same module can be used for deviations for + multiple modules, so the same entry MAY appear + within multiple 'module' entries. + The deviation module MUST be present in the 'module' + list, with the same name and revision values. + The 'conformance-type' value will be 'implement' for + the deviation module."; + uses yang-lib-common-leafs; + } + leaf conformance-type { + type enumeration { + enum "implement" { + description + "Indicates that the server implements one or more + protocol-accessible objects defined in the YANG module + identified in this entry. This includes deviation + statements defined in the module. + For YANG version 1.1 modules, there is at most one + module entry with conformance type 'implement' for a + particular module name, since YANG 1.1 requires that, + at most, one revision of a module is implemented. + For YANG version 1 modules, there SHOULD NOT be more + than one module entry for a particular module name."; + } + enum "import" { + description + "Indicates that the server imports reusable definitions + from the specified revision of the module but does + not implement any protocol-accessible objects from + this revision. + Multiple module entries for the same module name MAY + exist. This can occur if multiple modules import the + same module but specify different revision dates in + the import statements."; + } + } + // Removing the mandatory true for now as not all vendors may have + // this information if they do not implement yang-library. + //mandatory true; + description + "Indicates the type of conformance the server is claiming + for the YANG module identified by this entry."; + } + description + "This is a set of leafs extracted from the yang-library that are + specific to server implementations."; + reference "RFC7895 YANG Module Library : module-list grouping"; + } + + grouping shared-implementation-leafs { + leaf os-version { + type string; + description + "Version of the operating system using this module. This is primarily useful if + the software implementing the module is an application that requires a specific + operating system."; + } + leaf feature-set { + type string; + description + "An optional feature of the software that is required in order to implement this + module. Some form of this must be incorporated in software-version or + software-flavor, but can be broken out here for additional clarity."; + } + leaf os-type { + type string; + description + "Type of the operating system using this module. This is primarily useful if + the software implementing the module is an application that requires a + specific operating system."; + } + description + "Grouping of non-key leafs to be used in the module and vendor sub-trees."; + } + + grouping shared-module-leafs { + leaf generated-from { + type enumeration { + enum "mib" { + description + "Module generated from Structure of Management Information (SMI) + MIB per RFC6643."; + } + enum "not-applicable" { + description + "Module was not generated but it was authored manually."; + } + enum "native" { + description + "Module generated from platform internal, + proprietary structure, or code."; + } + } + default "not-applicable"; + description + "This statement defines weather the module was generated or not. + Default value is set to not-applicable, which means that module + was created manualy and not generated."; + } + leaf maturity-level { + type enumeration { + enum "ratified" { + description + "Maturity of a module that is fully approved (e.g., a standard)."; + } + enum "adopted" { + description + "Maturity of a module that is actively being developed by a organization towards ratification."; + } + enum "initial" { + description + "Maturity of a module that has been initially created, but has no official + organization-level status."; + } + enum "not-applicable" { + description + "The maturity level is not used for vendor-supplied models, and thus all vendor + modules will have a maturity of not-applicable"; + } + } + description + "The current maturity of the module with respect to the body that created it. + This allows one to understand where the module is in its overall life cycle."; + } + leaf document-name { + type string; + description + "The name of the document from which the module was extracted or taken; + or that provides additional context about the module."; + } + leaf author-email { + type yc:email-address; + description + "Contact email of the author who is responsible for this module."; + } + leaf reference { + type inet:uri; + description + "A string that is used to specify a textual cross-reference to an external document, either + another module that defines related management information, or a document that provides + additional information relevant to this definition."; + } + leaf module-classification { + type enumeration { + enum "network-service" { + description + "Network Service YANG Module that describes the configuration, state + data, operations, and notifications of abstract representations of + services implemented on one or multiple network elements."; + } + enum "network-element" { + description + "Network Element YANG Module that describes the configuration, state + data, operations, and notifications of specific device-centric + technologies or features."; + } + enum "unknown" { + description + "In case that there is not sufficient information about how to classify the module."; + } + enum "not-applicable" { + description + "The YANG module abstraction type is neither a Network Service YANG Module + nor a Network Element YANG Module."; + } + } + mandatory true; + description + "The high-level classification of the given YANG module."; + reference "RFC8199 YANG Module Classification"; + } + description + "These leafs are shared among the yang-catalog and its API."; + } + + grouping online-source-file { + leaf owner { + type string; + mandatory true; + description + "Username or ID of the owner of the version control system repository."; + } + leaf repository { + type string; + mandatory true; + description + "The name of the repository."; + } + leaf path { + type yc:path; + mandatory true; + description + "Location within the repository of the module file."; + } + leaf branch { + type string; + description + "Revision control system branch or tag to use to find the module. If this is not + specified, the head of the repository is used."; + } + description + "Networked version control system location of the module file."; + } +} diff --git a/tests/resources/compile_modules/ietf/test_dir_changed_content/yang-catalog@2018-04-03.yang b/tests/resources/compile_modules/ietf/test_dir_changed_content/yang-catalog@2018-04-03.yang new file mode 100644 index 0000000..f941e8d --- /dev/null +++ b/tests/resources/compile_modules/ietf/test_dir_changed_content/yang-catalog@2018-04-03.yang @@ -0,0 +1,858 @@ +module yang-catalog { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:yang-catalog"; + prefix yc; + + import ietf-yang-types { + prefix yang; + } + import ietf-yang-library { + prefix yanglib; + } + import ietf-inet-types { + prefix inet; + } + + organization + "yangcatalog.org"; + contact + "Benoit Claise + + Joe Clarke "; + description + "This module contains metadata pertinent to each YANG module, as + well as a list of vendor implementations for each module. The + structure is laid out in such a way as to make it possible to + locate metadata and vendor implementation on a per-module basis + as well as obtain a list of available modules for a given + vendor's platform and specific software release."; + + revision 2018-04-03 { + description + "Bump the YANG version number to 1.1 for the deref XPath + function."; + reference "YANG Catalog "; + } + revision 2018-01-23 { + description + "* Add leafs to track expire modules + * Correct a bug with leafref dereferencing"; + reference "YANG Catalog "; + } + revision 2017-09-26 { + description + "* Add leafs for tracking dependencies and dependents + * Simplify the generated-from enumerated values + * Refine the type for compilation-result to be an inet:uri + * Add leafs for semantic versioning"; + reference "YANG Catalog "; + } + revision 2017-08-18 { + description + "* Reorder organization to be with the other module keys + * Add a belongs-to leaf to track a submodule's parent"; + reference "YANG Catalog "; + } + revision 2017-07-28 { + description + "* Revert config false nodes as we need to be able to set these via + + * Make conformance-type optional as not all vendors implement yang-library + + * Re-add the path typedef"; + reference "YANG Catalog "; + } + revision 2017-07-26 { + description + "A number of improvements based on YANG Doctor review: + + * Remove references to 'server' in leafs describing YANG data + * Fold the augmentation module leafs directly under /catalog/modules/module + * Use identities for protocols instead of an emumeration + * Make some extractable fields 'config false' + * Fix various types + * Normalize enums to be lowercase + * Add a leaf for module-classification + * Change yang-version to be an enum + * Add module conformance, deviation and feature leafs under the implementation branches"; + reference "YANG Catalog "; + } + revision 2017-07-14 { + description + "Modularize some of the leafs and create typedefs so they + can be shared between the API input modules."; + reference "YANG Catalog "; + } + revision 2017-07-03 { + description + "Initial revision."; + reference + " + YANG Catalog "; + } + + /* + * Identities + */ + + identity protocol { + description + "Abstract base identity for a YANG-based protocol."; + } + + identity netconf { + base protocol; + description + "Protocol identity for NETCONF as described in RFC 6241."; + } + + identity restconf { + base protocol; + description + "Protocol identity for RESTCONF as described in RFC 8040."; + } + + typedef email-address { + type string { + pattern "[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+([.][a-zA-Z0-9-]+)*"; + } + description + "This type represents a string with an email address."; + } + + /* + * Typedefs + */ + + typedef path { + type string { + pattern '([A-Za-z]:|[\w-]+(\.[\w-]+)*)?(([/\\][\w@.-]+)+)'; + } + description + "This type represents a string with path to the file."; + } + + typedef semver { + type string { + pattern '[0-9]+\.[0-9]+\.[0-9]+[TEST PATTERN CHANGE]'; + } + description + "A semantic version in the format of x.y.z, where: + + x = the major version number + y = the minor version number + z = the patch version number + + Changes to the major version number denote backwards-incompatible + changes between two revisions of the same module. + + Changes to the minor version number indicate there have been new + backwards-compatible features introduced in the later version of + a module. + + Changes to the patch version indicate bug fixes between two + versions of a module."; + reference "Semantic Versioning 2.0.0 "; + } + + container catalog { + description + "Root container of yang-catalog holding two main branches - + modules and vendors. The modules sub-tree contains all the modules in + the catalog and all of their metadata with their implementations. + The vendor sub-tree holds modules for specific vendors, platforms, + software-versions, and software-flavors. It contains reference to a + name and revision of the module in order to reference the module's full + set of metadata."; + container modules { + description + "Container holding the list of modules"; + list module { + key "name revision organization"; + description + "Each entry represents one revision of one module + for one organization."; + uses yang-lib-common-leafs; + leaf organization { + type string; + description + "This statement defines the party responsible for this + module. The argument is a string that is used to specify a textual + description of the organization(s) under whose auspices this module + was developed."; + } + uses organization-specific-metadata; + leaf namespace { + type inet:uri; + mandatory true; + description + "The XML namespace identifier for this module."; + } + uses yang-lib-schema-leaf; + uses catalog-module-metadata; + list submodule { + key "name revision"; + description + "Each entry represents one submodule within the + parent module."; + uses yang-lib-common-leafs; + uses yang-lib-schema-leaf; + } + list dependencies { + key "name"; + description + "Each entry represents one dependency."; + uses yang-lib-common-leafs; + uses yang-lib-schema-leaf; + } + list dependents { + key "name"; + description + "Each entry represents one dependent."; + uses yang-lib-common-leafs; + uses yang-lib-schema-leaf; + } + leaf semantic-version { + type yc:semver; + description + "The formal semantic version of a module as provided by the module + itself. If the module does not provide a semantic version, this leaf + will not be specified."; + } + leaf derived-semantic-version { + type yc:semver; + description + "The semantic version of a module as compared to other revisions of + the same module. This value is computed algorithmically by ordering + all revisions of a given module and comparing them to look for backwards + incompatible changes."; + } + container implementations { + description + "Container holding lists of per-module implementation details."; + list implementation { + key "vendor platform software-version software-flavor"; + description + "List of module implementations."; + leaf vendor { + type string; + description + "Organization that implements this module."; + } + leaf platform { + type string; + description + "Platform on which this module is implemented."; + } + leaf software-version { + type string; + description + "Name of the version of software. With respect to most network device appliances, + this will be the operating system version. But for other YANG module + implementation, this would be a version of appliance software. Ultimately, + this should correspond to a version string that will be recognizable by + the consumers of the platform."; + } + leaf software-flavor { + type string; + description + "A variation of a specific version where + YANG model support may be different. Depending on the vendor, this could + be a license, additional software component, or a feature set."; + } + uses shared-implementation-leafs; + uses yang-lib-implementation-leafs; + } + } + } + } + container vendors { + description + "Container holding lists of organizations that publish YANG modules."; + list vendor { + key "name"; + description + "List of organizations publishing YANG modules."; + 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, + Name of industry forum examples: + OpenConfig, OpenDaylight, ON.Lab"; + } + container platforms { + description + "Container holding list of platforms."; + list platform { + key "name"; + description + "List of platforms under specific vendor"; + leaf name { + type string; + description + "Name of the platform"; + } + container software-versions { + description + "Container holding list of versions of software versions."; + list software-version { + key "name"; + description + "List of version of software versions under specific vendor, platform."; + leaf name { + type string; + description + "Name of the version of software. With respect to most network device appliances, + this will be the operating system version. But for other YANG module + implementation, this would be a version of appliance software. Ultimately, + this should correspond to a version string that will be recognizable by + the consumers of the platform."; + } + container software-flavors { + description + "Container holding list of software flavors."; + list software-flavor { + key "name"; + description + "List of software flavors under specific vendor, platform, software-version."; + leaf name { + type string; + description + "A variation of a specific version where + YANG model support may be different. Depending on the vendor, this could + be a license, additional software component, or a feature set."; + } + container protocols { + description + "List of the protocols"; + list protocol { + key "name"; + description + "YANG-based protocol that is used on the device. New identities + are expected to be added to address other YANG-based protocols."; + leaf name { + type identityref { + base yc:protocol; + } + description + "Identity of the YANG-based protocol that is supported."; + } + leaf-list protocol-version { + type string; + description + "Version of the specific protocol."; + } + leaf-list capabilities { + type string; + description + "Listed name of capabilities that are + supported by the specific device."; + } + } + } + container modules { + description + "Container holding list of modules."; + list module { + key "name revision organization"; + description + "List of references to YANG modules under specific vendor, platform, software-version, + software-flavor. Using these references, the complete set of metadata can be + retrieved for each module."; + leaf name { + type leafref { + path "/catalog/modules/module/name"; + } + description + "Reference to a name of the module that is contained in specific vendor, platform, + software-version, software-flavor."; + } + leaf revision { + type leafref { + path "deref(../name)/../revision"; + } + description + "Reference to a revision of the module that is contained in specific vendor, + platform, software-version, software-flavor."; + } + leaf organization { + type leafref { + path "deref(../revision)/../organization"; + } + description + "Reference to the authoring organization of the module for the implemented + module."; + } + uses shared-implementation-leafs; + uses yang-lib-implementation-leafs; + } + } + } + } + } + } + } + } + } + } + } + + grouping catalog-module-metadata { + uses shared-module-leafs; + leaf compilation-status { + type enumeration { + enum passed { + description + "All compilers were able to compile this YANG module without + any errors or warnings."; + } + enum passed-with-warnings { + description + "All compilers were able to compile this YANG module without + any errors, but at least one of them caught a warning."; + } + enum failed { + description + "At least one of compilers found an error while + compiling this YANG module."; + } + enum pending { + description + "The module was just added to the catalog and compilation testing is still + in progress."; + } + enum unknown { + description + "There is not sufficient information about compilation status. This Could + mean compilation crashed causing it not to complete fully."; + } + } + description + "Status of the module, whether it was possible to compile this YANG module or + there are still some errors/warnings."; + } + leaf compilation-result { + type inet:uri; + description + "Link to the result of the compilation explaining specifically what error or + warning occurred. This is not existing if compilation status is PASSED."; + } + leaf prefix { + type string; + description + "Statement of yang that is used to define the prefix associated with + the module and its namespace. The prefix statement's argument is + the prefix string that is used as a prefix to access a module. The + prefix string MAY be used to refer to definitions contained in the + module, e.g., if:ifName."; + } + leaf yang-version { + type enumeration { + enum 1.0 { + description + "YANG version 1.0 as defined in RFC 6020."; + } + enum 1.1 { + description + "YANG version 1.1 as defined in RFC 7950."; + } + } + description + "The optional yang-version statement specifies which version of the + YANG language was used in developing the module."; + } + leaf description { + type string; + description + "This statement takes as an argument a string that + contains a human-readable textual description of this definition. + The text is provided in a language (or languages) chosen by the + module developer; for the sake of interoperability, it is RECOMMENDED + to choose a language that is widely understood among the community of + network administrators who will use the module."; + } + leaf contact { + type string; + description + "This statement provides contact information for the module. + The argument is a string that is used to specify contact information + for the person or persons to whom technical queries concerning this + module should be sent, such as their name, postal address, telephone + number, and electronic mail address."; + } + leaf module-type { + type enumeration { + enum module { + description + "If YANG file contains module."; + } + enum submodule { + description + "If YANG file contains sub-module."; + } + } + description + "Whether a file contains a YANG module or sub-module."; + } + leaf belongs-to { + when "../module-type = 'submodule'" { + description + "Include the module's parent when it is a submodule."; + } + type yang:yang-identifier; + description + "Name of the module that includes this submodule."; + } + leaf tree-type { + type enumeration { + enum split { + description + "This module uses a split config/operational state layout."; + } + enum nmda-compatible { + description + "This module is compatible with the Network Management Datastores + Architecture (NMDA) and combines config and operational state nodes."; + } + enum transitional-extra { + description + "This module is derived as a '-state' module to allow for transitioning + to a full NMDA-compliant tree structure."; + } + enum openconfig { + description + "This module uses the Openconfig data element layout."; + } + enum unclassified { + description + "This module does not belong to any category or can't be determined."; + } + enum not-applicable { + description + "This module is not applicable. For example, because the YANG module only contains typedefs, groupings, or is a submodule"; + } + } + description + "The type of data element tree used by the module as it relates to the + Network Management Datastores Architecture."; + reference "draft-dsdt-nmda-guidelines Guidelines for YANG Module Authors (NMDA)"; + } + leaf yang-tree { + when "../module-type = 'module'"; + type inet:uri; + description + "This leaf provides a URI that points to the ASCII tree format of the module in + draft-ietf-netmod-yang-tree-diagrams format."; + reference "See draft-ietf-netmod-yang-tree-diagrams."; + } + leaf expires { + type yang:date-and-time; + description + "Date and time of when this module expires (if it expires). This will typically be used for + modules that have not been fully ratified."; + } + leaf expired { + type union { + type boolean; + type enumeration { + enum not-applicable { + description + "This module is not and will not be expired."; + } + } + } + default "false"; + description + "Whether or not this module has expired. If the current date is beyond the expires date, then expired + should be true."; + } + description + "Grouping of YANG module metadata that extends the common list defined in the YANG + Module Library (RFC 7895)."; + } + + grouping organization-specific-metadata { + container ietf { + when "../organization = 'ietf'" { + description + "Include this container specific metadata of the IETF."; + } + leaf ietf-wg { + type string; + description + "Working group that authored the document containing this module."; + } + description + "Include this container for the IETF-specific organization metadata."; + } + description + "Any organization that has some specific metadata of the yang module and want them add to the + yang-catalog, should augment this grouping. This grouping is for any metadata that can`t be used for + every yang module."; + } + + grouping yang-lib-common-leafs { + leaf name { + type yang:yang-identifier; + description + "The YANG module or submodule name."; + } + leaf revision { + type union { + type yanglib:revision-identifier; + type string { + length "0"; + } + } + description + "The YANG module or submodule revision date. + A zero-length string is used if no revision statement + is present in the YANG module or submodule."; + } + description + "The YANG module or submodule revision date. + A zero-length string is used if no revision statement + is present in the YANG module or submodule."; + reference "RFC7895 YANG Module Library : common-leafs grouping"; + } + + grouping yang-lib-schema-leaf { + leaf schema { + type inet:uri; + description + "Contains a URL that represents the YANG schema + resource for this module or submodule. + This leaf will only be present if there is a URL + available for retrieval of the schema for this entry."; + } + description + "These are a subset of leafs from the yang-library (RFC 7895) that provide some + extractable fields for catalog modules. The module-list grouping cannot be + used from yang-library as modules themselves cannot have conformance without + a server."; + reference "RFC7895 YANG Module Library : schema-leaf grouping"; + } + + grouping yang-lib-implementation-leafs { + leaf-list feature { + type yang:yang-identifier; + description + "List of YANG feature names from this module that are + supported by the server, regardless of whether they are + defined in the module or any included submodule."; + } + list deviation { + key "name revision"; + description + "List of YANG deviation module names and revisions + used by this server to modify the conformance of + the module associated with this entry. Note that + the same module can be used for deviations for + multiple modules, so the same entry MAY appear + within multiple 'module' entries. + The deviation module MUST be present in the 'module' + list, with the same name and revision values. + The 'conformance-type' value will be 'implement' for + the deviation module."; + uses yang-lib-common-leafs; + } + leaf conformance-type { + type enumeration { + enum implement { + description + "Indicates that the server implements one or more + protocol-accessible objects defined in the YANG module + identified in this entry. This includes deviation + statements defined in the module. + For YANG version 1.1 modules, there is at most one + module entry with conformance type 'implement' for a + particular module name, since YANG 1.1 requires that, + at most, one revision of a module is implemented. + For YANG version 1 modules, there SHOULD NOT be more + than one module entry for a particular module name."; + } + enum import { + description + "Indicates that the server imports reusable definitions + from the specified revision of the module but does + not implement any protocol-accessible objects from + this revision. + Multiple module entries for the same module name MAY + exist. This can occur if multiple modules import the + same module but specify different revision dates in + the import statements."; + } + } + // Removing the mandatory true for now as not all vendors may have + // this information if they do not implement yang-library. + //mandatory true; + description + "Indicates the type of conformance the server is claiming + for the YANG module identified by this entry."; + } + description + "This is a set of leafs extracted from the yang-library that are + specific to server implementations."; + reference "RFC7895 YANG Module Library : module-list grouping"; + } + + grouping shared-implementation-leafs { + leaf os-version { + type string; + description + "Version of the operating system using this module. This is primarily useful if + the software implementing the module is an application that requires a specific + operating system."; + } + leaf feature-set { + type string; + description + "An optional feature of the software that is required in order to implement this + module. Some form of this must be incorporated in software-version or + software-flavor, but can be broken out here for additional clarity."; + } + leaf os-type { + type string; + description + "Type of the operating system using this module. This is primarily useful if + the software implementing the module is an application that requires a + specific operating system."; + } + description + "Grouping of non-key leafs to be used in the module and vendor sub-trees."; + } + + grouping shared-module-leafs { + leaf generated-from { + type enumeration { + enum mib { + description + "Module generated from Structure of Management Information (SMI) + MIB per RFC6643."; + } + enum not-applicable { + description + "Module was not generated but it was authored manually."; + } + enum native { + description + "Module generated from platform internal, + proprietary structure, or code."; + } + } + default "not-applicable"; + description + "This statement defines weather the module was generated or not. + Default value is set to not-applicable, which means that module + was created manualy and not generated."; + } + leaf maturity-level { + type enumeration { + enum ratified { + description + "Maturity of a module that is fully approved (e.g., a standard)."; + } + enum adopted { + description + "Maturity of a module that is actively being developed by a organization towards ratification."; + } + enum initial { + description + "Maturity of a module that has been initially created, but has no official + organization-level status."; + } + enum not-applicable { + description + "The maturity level is not used for vendor-supplied models, and thus all vendor + modules will have a maturity of not-applicable"; + } + } + description + "The current maturity of the module with respect to the body that created it. + This allows one to understand where the module is in its overall life cycle."; + } + leaf document-name { + type string; + description + "The name of the document from which the module was extracted or taken; + or that provides additional context about the module."; + } + leaf author-email { + type yc:email-address; + description + "Contact email of the author who is responsible for this module."; + } + leaf reference { + type inet:uri; + description + "A string that is used to specify a textual cross-reference to an external document, either + another module that defines related management information, or a document that provides + additional information relevant to this definition."; + } + leaf module-classification { + type enumeration { + enum network-service { + description + "Network Service YANG Module that describes the configuration, state + data, operations, and notifications of abstract representations of + services implemented on one or multiple network elements."; + } + enum network-element { + description + "Network Element YANG Module that describes the configuration, state + data, operations, and notifications of specific device-centric + technologies or features."; + } + enum unknown { + description + "In case that there is not sufficient information about how to classify the module."; + } + enum not-applicable { + description + "The YANG module abstraction type is neither a Network Service YANG Module + nor a Network Element YANG Module."; + } + } + mandatory true; + description + "The high-level classification of the given YANG module."; + reference "RFC8199 YANG Module Classification"; + } + description + "These leafs are shared among the yang-catalog and its API."; + } + + grouping online-source-file { + leaf owner { + type string; + mandatory true; + description + "Username or ID of the owner of the version control system repository."; + } + leaf repository { + type string; + mandatory true; + description + "The name of the repository."; + } + leaf path { + type yc:path; + mandatory true; + description + "Location within the repository of the module file."; + } + leaf branch { + type string; + description + "Revision control system branch or tag to use to find the module. If this is not + specified, the head of the repository is used."; + } + description + "Networked version control system location of the module file."; + } +} diff --git a/tests/resources/test.conf b/tests/resources/test.conf index 65afadf..c093f0c 100644 --- a/tests/resources/test.conf +++ b/tests/resources/test.conf @@ -68,4 +68,4 @@ modules-directory=/var/yang/yang/modules [Tool-Section] confdc-exec=/bin/foo -pyang-exec=/usr/local/bin/pyang +pyang-exec= diff --git a/tests/test_compile_modules.py b/tests/test_compile_modules.py index 38881ca..981ea48 100644 --- a/tests/test_compile_modules.py +++ b/tests/test_compile_modules.py @@ -77,6 +77,7 @@ def resource(cls, path: str) -> str: return os.path.join(cls.resources_path, path) @mock.patch('modules_compilation.compile_modules.check_yangcatalog_data') + @mock.patch('modules_compilation.compile_modules.combined_compilation', mock.MagicMock(return_value='PASSED')) def test_rfc_modules_compilation(self, check_yang_catalog_mock: mock.MagicMock): modules_count = len(os.listdir(os.path.join(self.ietf_directory, 'YANG-rfc'))) rfc_modules_compilation_instance = compile_modules.CompileRfcModules(self.basic_compile_modules_options) @@ -95,6 +96,7 @@ def test_rfc_modules_compilation(self, check_yang_catalog_mock: mock.MagicMock): self.assertEqual(len(json.load(f)), modules_count) @mock.patch('modules_compilation.compile_modules.check_yangcatalog_data') + @mock.patch('modules_compilation.compile_modules.combined_compilation', mock.MagicMock(return_value='PASSED')) def test_draft_modules_compilation(self, check_yang_catalog_mock: mock.MagicMock): modules_count = len(os.listdir(os.path.join(self.ietf_directory, 'YANG'))) draft_modules_compilation_instance = compile_modules.CompileDraftModules(self.basic_compile_modules_options) @@ -113,6 +115,7 @@ def test_draft_modules_compilation(self, check_yang_catalog_mock: mock.MagicMock self.assertEqual(len(json.load(f)), modules_count) @mock.patch('modules_compilation.compile_modules.check_yangcatalog_data') + @mock.patch('modules_compilation.compile_modules.combined_compilation', mock.MagicMock(return_value='PASSED')) def test_draft_archive_modules_compilation(self, check_yang_catalog_mock: mock.MagicMock): modules_count = len(os.listdir(os.path.join(self.ietf_directory, 'YANG'))) draft_archive_modules_compilation_instance = compile_modules.CompileDraftArchiveModules( @@ -131,6 +134,7 @@ def test_draft_archive_modules_compilation(self, check_yang_catalog_mock: mock.M self.assertEqual(len(json.load(f)), modules_count) @mock.patch('modules_compilation.compile_modules.check_yangcatalog_data') + @mock.patch('modules_compilation.compile_modules.pyang_compilation_status', mock.MagicMock(return_value='PASSED')) def test_example_modules_compilation(self, check_yang_catalog_mock: mock.MagicMock): modules_count = len(os.listdir(os.path.join(self.ietf_directory, 'YANG'))) example_modules_compilation_instance = compile_modules.CompileExampleModules(self.basic_compile_modules_options) @@ -145,6 +149,7 @@ def test_example_modules_compilation(self, check_yang_catalog_mock: mock.MagicMo self.assertEqual(len(json.load(f)), modules_count) @mock.patch('modules_compilation.compile_modules.check_yangcatalog_data') + @mock.patch('modules_compilation.compile_modules.combined_compilation', mock.MagicMock(return_value='PASSED')) def test_hashed_files_compilation(self, check_yang_catalog_mock: mock.MagicMock): prefix = 'TestPrefix' json_file = f'{prefix}.json' @@ -167,11 +172,14 @@ def test_hashed_files_compilation(self, check_yang_catalog_mock: mock.MagicMock) self.assertEqual(len(json.load(f)), modules_count) @mock.patch('modules_compilation.compile_modules.check_yangcatalog_data') + @mock.patch('modules_compilation.compile_modules.combined_compilation', mock.MagicMock(return_value='PASSED')) def test_change_modules_already_available_in_all_modules_dir(self, check_yang_catalog_mock: mock.MagicMock): prefix = 'TestPrefix' json_file = f'{prefix}.json' root_dir = os.path.join(self.ietf_directory, '_test_test_dir') os.makedirs(os.path.join(self.ietf_directory, '_test_test_dir'), exist_ok=True) + for filename in os.listdir(root_dir): + os.remove(os.path.join(root_dir, filename)) for filename in os.listdir((test_dir := os.path.join(self.ietf_directory, 'test_dir'))): file_path = os.path.join(test_dir, filename) shutil.copy(file_path, os.path.join(self.all_modules_dir, filename)) @@ -185,12 +193,7 @@ def test_change_modules_already_available_in_all_modules_dir(self, check_yang_ca self.basic_compile_modules_options, ) self.add_modules_to_file_hasher(modules_compilation_instance, root_dir, self.all_modules_dir) - root_dir_files = os.listdir(root_dir) - for i, filename in enumerate(os.listdir((test_dir := os.path.join(self.ietf_directory, 'YANG')))): - if i >= modules_count: - break - root_dir_file = root_dir_files[i] - shutil.copy(os.path.join(test_dir, filename), root_dir_file) + self.change_all_files_content(root_dir, os.path.join(self.ietf_directory, 'test_dir_changed_content')) modules_compilation_instance() check_yang_catalog_mock.assert_not_called() self.assertEqual(modules_compilation_instance.file_hasher.updated_hashes, {}) @@ -200,6 +203,77 @@ def test_change_modules_already_available_in_all_modules_dir(self, check_yang_ca self.assertEqual(len(json.load(f)), modules_count) shutil.rmtree(root_dir) + @mock.patch('modules_compilation.compile_modules.check_yangcatalog_data') + @mock.patch('modules_compilation.compile_modules.combined_compilation', mock.MagicMock(return_value='PASSED')) + def test_modules_without_old_normalized_file_hash(self, check_yang_catalog_mock: mock.MagicMock): + prefix = 'TestPrefix' + json_file = f'{prefix}.json' + root_dir = os.path.join(self.ietf_directory, 'test_dir') + self.write_cached_result_to_json_file(json_file, root_dir, root_dir) + modules_count = len(os.listdir(root_dir)) + self.basic_compile_modules_options.force_compilation = False + modules_compilation_instance = compile_modules.CompileBaseModules( + prefix, + root_dir, + self.basic_compile_modules_options, + ) + self.add_modules_to_file_hasher(modules_compilation_instance, root_dir, root_dir, add_normalized_hash=False) + modules_compilation_instance() + check_yang_catalog_mock.assert_not_called() + self.assertEqual(len(modules_compilation_instance.file_hasher.updated_hashes), modules_count) + for filename in os.listdir(root_dir): + self.assertIn(os.path.join(root_dir, filename), modules_compilation_instance.file_hasher.updated_hashes) + private_dir_files = os.listdir(self.web_private) + self.assertIn(f'{prefix}YANGPageCompilation.html', private_dir_files) + with open(os.path.join(self.web_private, json_file)) as f: + self.assertEqual(len(json.load(f)), modules_count) + + @mock.patch('modules_compilation.compile_modules.check_yangcatalog_data') + @mock.patch('modules_compilation.compile_modules.combined_compilation', mock.MagicMock(return_value='PASSED')) + def test_modules_change_content(self, check_yang_catalog_mock: mock.MagicMock): + prefix = 'TestPrefix' + json_file = f'{prefix}.json' + root_dir = os.path.join(self.ietf_directory, 'test_dir') + if os.path.exists((gitkeep := os.path.join(self.all_modules_dir, '.gitkeep'))): + os.remove(gitkeep) + self.write_cached_result_to_json_file(json_file, root_dir, self.all_modules_dir) + for filename in os.listdir(root_dir): + shutil.copy(os.path.join(root_dir, filename), os.path.join(self.all_modules_dir, filename)) + self.change_all_files_content( + self.all_modules_dir, + os.path.join(self.ietf_directory, 'test_dir_changed_content'), + ) + modules_count = len(os.listdir(root_dir)) + self.basic_compile_modules_options.force_compilation = False + modules_compilation_instance = compile_modules.CompileBaseModules( + prefix, + root_dir, + self.basic_compile_modules_options, + ) + self.add_modules_to_file_hasher(modules_compilation_instance, root_dir, self.all_modules_dir, True) + all_normalized_file_hashes = [ + file_hash_info['normalized_file_hash'] + for file_hash_info in modules_compilation_instance.file_hasher.files_hashes.values() + ] + modules_compilation_instance() + check_yang_catalog_mock.assert_called() + self.assertEqual(len(modules_compilation_instance.file_hasher.updated_hashes), modules_count) + for filename in os.listdir(self.all_modules_dir): + self.assertIn( + os.path.join(self.all_modules_dir, filename), + modules_compilation_instance.file_hasher.updated_hashes, + ) + updated_normalized_file_hashes = [ + file_hash_info['normalized_file_hash'] + for file_hash_info in modules_compilation_instance.file_hasher.updated_hashes.values() + ] + for normalized_hash in all_normalized_file_hashes: + self.assertNotIn(normalized_hash, updated_normalized_file_hashes) + private_dir_files = os.listdir(self.web_private) + self.assertIn(f'{prefix}YANGPageCompilation.html', private_dir_files) + with open(os.path.join(self.web_private, json_file)) as f: + self.assertEqual(len(json.load(f)), modules_count) + def write_cached_result_to_json_file(self, json_filename: str, modules_dir: str, cached_result_file_directory: str): json_file_data = {} module_filenames = os.listdir(modules_dir) @@ -219,14 +293,25 @@ def add_modules_to_file_hasher( modules_compilation_instance: compile_modules.CompileModulesABC, modules_directory: str, modules_directory_to_use_in_hasher: str, + add_normalized_hash: bool = True, ): file_hasher = modules_compilation_instance.file_hasher for filename in os.listdir(modules_directory): + path = os.path.join(modules_directory, filename) file_hasher.files_hashes[os.path.join(modules_directory_to_use_in_hasher, filename)] = { - 'hash': file_hasher.hash_file(os.path.join(modules_directory, filename)), + 'hash': file_hasher.hash_file(path), 'validator_versions': self.validator_versions, + 'normalized_file_hash': file_hasher.get_normalized_file_hash(path) if add_normalized_hash else None, } + def change_all_files_content(self, dir_where_to_change: str, dir_with_new_files: str): + root_dir_files = os.listdir(dir_where_to_change) + for i, filename in enumerate(os.listdir(dir_with_new_files)): + if i >= len(root_dir_files): + break + root_dir_file = root_dir_files[i] + shutil.copy(os.path.join(dir_with_new_files, filename), os.path.join(dir_where_to_change, root_dir_file)) + if __name__ == '__main__': unittest.main() diff --git a/tests/test_get_stats.py b/tests/test_get_stats.py index 28632ed..bc8ec84 100644 --- a/tests/test_get_stats.py +++ b/tests/test_get_stats.py @@ -46,7 +46,7 @@ def setUpClass(cls): cls.config.set('Directory-Section', 'ietf-directory', cls.resource('ietf')) cls.config.set('Web-Section', 'private-directory', cls.resource('private')) cls.web_private_directory = cls.config.get('Web-Section', 'private-directory') - cls.directory_to_store_backup_files = os.path.join('tests/resources/yang_get_stats', uuid4().hex) + cls.directory_to_store_backup_files = cls.resource(uuid4().hex) cls.stats_directory = os.path.join(cls.web_private_directory, 'stats') os.makedirs(cls.directory_to_store_backup_files, exist_ok=True) for filename in os.listdir(cls.backup_directory):