From 18dc51495945e2235746176b72f90568853e60ce Mon Sep 17 00:00:00 2001 From: omid Date: Thu, 28 May 2026 09:48:00 -0400 Subject: [PATCH] Releasing v26.5 --- docs/changelog/2026/may.rst | 33 + docs/changelog/index.rst | 1 + docs/changelog_plugins/2026/may.rst | 69 + docs/changelog_plugins/index.rst | 1 + src/unicon/plugins/__init__.py | 2 +- src/unicon/plugins/cheetah/ap/patterns.py | 2 +- src/unicon/plugins/generic/patterns.py | 2 + .../plugins/generic/service_implementation.py | 9 +- .../plugins/generic/service_patterns.py | 2 +- src/unicon/plugins/iosxe/c8kv/__init__.py | 4 + .../iosxe/c8kv/service_implementation.py | 22 + src/unicon/plugins/iosxe/c8kv/statemachine.py | 26 +- src/unicon/plugins/iosxe/c8kv/statements.py | 79 +- src/unicon/plugins/iosxe/cat9k/__init__.py | 1 + .../iosxe/cat9k/service_implementation.py | 4 +- .../plugins/iosxe/connection_provider.py | 3 +- src/unicon/plugins/iosxe/patterns.py | 4 +- src/unicon/plugins/iosxe/settings.py | 4 + .../iosxe/stack/service_implementation.py | 93 +- .../plugins/iosxe/stack/statemachine.py | 8 +- src/unicon/plugins/iosxe/statements.py | 69 +- .../plugins/iosxr/service_implementation.py | 11 +- .../nxos/n9k/service_implementation.py | 22 +- .../plugins/nxos/service_implementation.py | 5 + src/unicon/plugins/pid_tokens.csv | 3226 +++++++++-------- .../mock_data/iosxe/iosxe_mock_cat9k.yaml | 62 +- .../mock_data/iosxe/iosxe_mock_data_c8kv.yaml | 11 +- .../mock_data/iosxe/iosxe_mock_data_ewlc.yaml | 10 + .../tests/mock_data/nxos/nxos_mock_data.yaml | 4 +- .../tests/mock_data/nxos/nxos_mock_n9k.yaml | 5 +- .../plugins/tests/test_plugin_cheetah_ap.py | 7 + .../plugins/tests/test_plugin_generic.py | 24 + src/unicon/plugins/tests/test_plugin_iosxe.py | 41 - .../plugins/tests/test_plugin_iosxe_c8kv.py | 185 + .../tests/test_plugin_iosxe_cat3k_ewlc.py | 23 + .../plugins/tests/test_plugin_iosxe_cat9k.py | 44 + .../plugins/tests/test_plugin_iosxe_stack.py | 43 +- src/unicon/plugins/tests/test_plugin_iosxr.py | 20 + 38 files changed, 2312 insertions(+), 1869 deletions(-) create mode 100644 docs/changelog/2026/may.rst create mode 100644 docs/changelog_plugins/2026/may.rst create mode 100644 src/unicon/plugins/iosxe/c8kv/service_implementation.py create mode 100644 src/unicon/plugins/tests/test_plugin_iosxe_c8kv.py diff --git a/docs/changelog/2026/may.rst b/docs/changelog/2026/may.rst new file mode 100644 index 00000000..96cba45f --- /dev/null +++ b/docs/changelog/2026/may.rst @@ -0,0 +1,33 @@ +May 2026 +========== + +May 26 - Unicon v26.5 +------------------------ + + + +.. csv-table:: Module Versions + :header: "Modules", "Versions" + + ``unicon.plugins``, v26.5 + ``unicon``, v26.5 + + + + +Changelogs +^^^^^^^^^^ +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* iosxe/cat9k + * Updated `HARommon` + * Ensures HA rommon breaks boot on all consoles via active reload plus parallel standby interrupts with improved state validation. + +* iosxe/stack + * Updated `StackStateMachine` + * Refactored rommon path to include entire shelf reload and breakboot on all members. + * update `StackRommon` to inherit from `IosXESingleRpStateMachine` to leverage existing rommon logic and ensure consistency with single RP devices. + + diff --git a/docs/changelog/index.rst b/docs/changelog/index.rst index 9d84dac4..5ce7e09e 100644 --- a/docs/changelog/index.rst +++ b/docs/changelog/index.rst @@ -4,6 +4,7 @@ Changelog .. toctree:: :maxdepth: 2 + 2026/may 2026/april 2026/march 2026/february diff --git a/docs/changelog_plugins/2026/may.rst b/docs/changelog_plugins/2026/may.rst new file mode 100644 index 00000000..422ad68f --- /dev/null +++ b/docs/changelog_plugins/2026/may.rst @@ -0,0 +1,69 @@ +May 2026 +========== + +May 26 - Unicon v26.5 +------------------------ + + + +.. csv-table:: Module Versions + :header: "Modules", "Versions" + + ``unicon.plugins``, v26.5 + ``unicon``, v26.5 + + + + +Changelogs +^^^^^^^^^^ +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* nxos/n9k + * AttachModuleConsoleN9k + * Updated to use 'run bash sudo rlogin lc' command for CTC collection support + +* nxos + * AttachModuleConsole + * Updated escape character detection to match 'press ~, to exit' message + +* iosxe + * Added self-signed secure server certificate warning messages to syslog + * Updated fast_reload_confirm in pattern to match Proceed with fast reload? [confirm]. + * Modified c8kv statemachine + * Updated rommon handling and state transitions + * Cleaned up unused code and improved state management + * Modified c8kv statements + * Updated statements for better rommon support + * Modified patterns + * Updated patterns to support c8kv rommon handling + * Modified statements + * Updated general statements for improved rommon compatibility + * Modified patterns + * Updated are_you_sure pattern to make [y] optional, fixing TimeoutError + * Connection provider + * Updated enable invocation to use the connection-level + +* iosxr + * Modified execute service + * Fixed state detection overrides so commands that disable detection do not affect later execute calls. + * Passed the per-command detect_state value through service kwargs instead of storing it on the service instance. + +* cheetah/ap + * Updated the AP shell prompt pattern to match both ``~`` and ``/`` shell prompts, and added a regression test for the home-directory prompt case. + +* unicon.plugins + * Updated the pid_tokens.csv file to include additional pids. + +* generic + * Enable + * Added support for passing `prompt_recovery` to the state machine when + + +-------------------------------------------------------------------------------- + Prompt. +-------------------------------------------------------------------------------- + + diff --git a/docs/changelog_plugins/index.rst b/docs/changelog_plugins/index.rst index 5760bbc4..bb4f05c8 100644 --- a/docs/changelog_plugins/index.rst +++ b/docs/changelog_plugins/index.rst @@ -4,6 +4,7 @@ Plugins Changelog .. toctree:: :maxdepth: 2 + 2026/may 2026/april 2026/march 2026/february diff --git a/src/unicon/plugins/__init__.py b/src/unicon/plugins/__init__.py index 3d8782a7..c7a34f59 100644 --- a/src/unicon/plugins/__init__.py +++ b/src/unicon/plugins/__init__.py @@ -1,4 +1,4 @@ -__version__ = "26.4" +__version__ = "26.5" supported_chassis = [ 'single_rp', diff --git a/src/unicon/plugins/cheetah/ap/patterns.py b/src/unicon/plugins/cheetah/ap/patterns.py index 89d05fb4..d84c7626 100644 --- a/src/unicon/plugins/cheetah/ap/patterns.py +++ b/src/unicon/plugins/cheetah/ap/patterns.py @@ -9,4 +9,4 @@ class CheetahAPPatterns(GenericPatterns): def __init__(self): super().__init__() - self.ap_shell_prompt = r'^(.*?)\w+:\/(.*?)#\s?$' \ No newline at end of file + self.ap_shell_prompt = r'^(.*?)\w+:(~|\/)(.*?)#\s?$' diff --git a/src/unicon/plugins/generic/patterns.py b/src/unicon/plugins/generic/patterns.py index e68a3751..8c81d779 100644 --- a/src/unicon/plugins/generic/patterns.py +++ b/src/unicon/plugins/generic/patterns.py @@ -81,6 +81,8 @@ def __init__(self): r"%Error opening tftp:\/\/255\.255\.255\.255|Autoinstall trying|" r"audit: kauditd hold queue overflow|SECURITY WARNING|%RSA key|INSECURE DYNAMIC WARNING|" r"key config-key password-encrypt|" + r"Failed to generate persistent self-signed certificate\.|" + r"Secure server will use temporary self-signed certificate\.|" r"(LC|RP)/\d+/\d+/CPU\d+:\w+\s+\d+\s+\d{2}:\d{2}:\d{2}|" r"\[OK\]" r").*\s*$" diff --git a/src/unicon/plugins/generic/service_implementation.py b/src/unicon/plugins/generic/service_implementation.py index 2fffaef1..e45e0ace 100644 --- a/src/unicon/plugins/generic/service_implementation.py +++ b/src/unicon/plugins/generic/service_implementation.py @@ -513,7 +513,8 @@ def call_service(self, target=None, command='', *args, **kwargs): sm.go_to(self.start_state, spawn, context=handle.context, - timeout=timeout) + timeout=timeout, + prompt_recovery=self.prompt_recovery) except (UniconAuthenticationError, CredentialsExhaustedError): # Don't wrap auth errors - re-raise them directly raise @@ -611,7 +612,6 @@ def __init__(self, connection, context, **kwargs): self.matched_retry_sleep = connection.settings.EXECUTE_MATCHED_RETRY_SLEEP self.state_change_matched_retries = connection.settings.EXECUTE_STATE_CHANGE_MATCH_RETRIES self.state_change_matched_retry_sleep = connection.settings.EXECUTE_STATE_CHANGE_MATCH_RETRY_SLEEP - self.detect_state = True def log_service_call(self): pass @@ -635,7 +635,7 @@ def call_service(self, command=[], # noqa: C901 if allow_state_change is None: allow_state_change = con.settings.EXEC_ALLOW_STATE_CHANGE - self.detect_state = detect_state if detect_state is not None else self.detect_state + detect_state = True if detect_state is None else detect_state timeout = timeout or self.timeout @@ -693,7 +693,7 @@ def call_service(self, command=[], # noqa: C901 if custom_auth_stmt: dialog += Dialog(custom_auth_stmt) - if self.detect_state: + if detect_state: # Add all known states to detect state changes. for state in sm.states: # The current state is already added by the service_dialog method @@ -3130,4 +3130,3 @@ def __getattr__(self, attr): else: raise AttributeError('Device %s and/or connection %s has no attribute %s' % (self.conn.device, self.conn, attr)) - diff --git a/src/unicon/plugins/generic/service_patterns.py b/src/unicon/plugins/generic/service_patterns.py index 2b57b261..636a72ac 100644 --- a/src/unicon/plugins/generic/service_patterns.py +++ b/src/unicon/plugins/generic/service_patterns.py @@ -31,7 +31,7 @@ def __init__(self): self.connection_closed = r'^(.*?)Connection.*? closed|disconnect: Broken pipe' self.press_return = r'Press RETURN to get started.*' self.config_session_locked = r'^.*Config session is locked.*user will be pushed back to exec mode' - + self.fast_reload_confirm = r'^.*Proceed( with( (quick|fast))? reload)?\?\s*\[confirm\]' # Traceroute patterns class TraceroutePatterns(object): diff --git a/src/unicon/plugins/iosxe/c8kv/__init__.py b/src/unicon/plugins/iosxe/c8kv/__init__.py index 9cb4d4d3..936d118a 100644 --- a/src/unicon/plugins/iosxe/c8kv/__init__.py +++ b/src/unicon/plugins/iosxe/c8kv/__init__.py @@ -2,9 +2,13 @@ from unicon.plugins.iosxe import IosXEServiceList, IosXESingleRpConnection from unicon.plugins.iosxe.c8kv.statemachine import IosXEC8kvSingleRpStateMachine +from . import service_implementation as svc + class IosXEC8kvServiceList(IosXEServiceList): def __init__(self): super().__init__() + self.reload = svc.Reload + class IosXEC8kvSingleRpConnection(IosXESingleRpConnection): platform = 'c8kv' diff --git a/src/unicon/plugins/iosxe/c8kv/service_implementation.py b/src/unicon/plugins/iosxe/c8kv/service_implementation.py new file mode 100644 index 00000000..392fff23 --- /dev/null +++ b/src/unicon/plugins/iosxe/c8kv/service_implementation.py @@ -0,0 +1,22 @@ +""" IOS-XE C8KV service implementations. """ + +from unicon.eal.dialogs import Dialog +from ..service_implementation import Reload as IosxeReload +from .statements import boot_from_rommon_stmt + +from unicon.plugins.generic.service_statements import reload_statement_list +from unicon.plugins.generic.statements import default_statement_list +from unicon.plugins.iosxe.statements import grub_prompt_stmt + +from .statements import boot_from_rommon_stmt + + +class Reload(IosxeReload): + """C8KV Reload service that handles GRUB boot scenarios.""" + + def __init__(self, connection, context, **kwargs): + super().__init__(connection, context, **kwargs) + # Override the service dialog to include c8kv specific statements + self.dialog = Dialog([boot_from_rommon_stmt, grub_prompt_stmt] + + reload_statement_list + + default_statement_list) diff --git a/src/unicon/plugins/iosxe/c8kv/statemachine.py b/src/unicon/plugins/iosxe/c8kv/statemachine.py index 3523d978..5845a3a5 100644 --- a/src/unicon/plugins/iosxe/c8kv/statemachine.py +++ b/src/unicon/plugins/iosxe/c8kv/statemachine.py @@ -5,21 +5,18 @@ GRUB boot mode and golden image recovery. """ -from unicon.statemachine import State, Path -from unicon.eal.dialogs import Dialog, Statement -from unicon.plugins.iosxe.statemachine import ( - IosXESingleRpStateMachine, - IosXEDualRpStateMachine, - boot_from_rommon - ) -from unicon.plugins.iosxe.statements import boot_from_rommon_statement_list -from unicon.plugins.generic.service_patterns import ReloadPatterns +from unicon.statemachine import Path +from unicon.eal.dialogs import Dialog +from unicon.plugins.iosxe.statemachine import IosXESingleRpStateMachine from unicon.plugins.generic.patterns import GenericPatterns -from unicon.plugins.iosxe.cat8k.service_statements import ( - reload_to_rommon_statement_list) +from unicon.plugins.iosxe.statements import boot_from_rommon_statement_list + +from .statements import boot_from_rommon + generic_patterns = GenericPatterns() # Uses generic patterns to support GRUB prompt + class IosXEC8kvSingleRpStateMachine(IosXESingleRpStateMachine): """State machine for single RP Cisco Catalyst 8000V devices. @@ -53,7 +50,6 @@ def create(self): # Get state objects rommon = self.get_state('rommon') disable = self.get_state('disable') - enable = self.get_state('enable') # Update rommon pattern to include GRUB prompt (grub>) # GenericPatterns.rommon_prompt matches: rommon>, switch:, and grub> @@ -61,17 +57,11 @@ def create(self): # Remove default paths that don't handle GRUB properly self.remove_path('rommon', 'disable') - self.remove_path('enable', 'rommon') # Add C8KV-specific rommon-to-disable path # Uses custom boot_from_rommon_statement_list that handles GRUB rommon_to_disable = Path(rommon, disable, boot_from_rommon, Dialog( boot_from_rommon_statement_list)) - - # Add C8KV-specific enable-to-rommon path for reload operations - enable_to_rommon = Path(enable, rommon, 'reload', Dialog( - reload_to_rommon_statement_list)) # Register the custom paths self.add_path(rommon_to_disable) - self.add_path(enable_to_rommon) \ No newline at end of file diff --git a/src/unicon/plugins/iosxe/c8kv/statements.py b/src/unicon/plugins/iosxe/c8kv/statements.py index 479b281f..35f5fb4f 100644 --- a/src/unicon/plugins/iosxe/c8kv/statements.py +++ b/src/unicon/plugins/iosxe/c8kv/statements.py @@ -1,58 +1,47 @@ -import re -import time +import datetime import logging from unicon.eal.dialogs import Statement -from unicon.plugins.generic.statements import ( - boot_timeout_stmt, -) - -from unicon.plugins.iosxe.patterns import IosXEReloadPatterns, IosXEPatterns +from ..patterns import IosXEPatterns +from ..settings import IosXESettings -log = logging.getLogger(__name__) -reload_patterns = IosXEReloadPatterns() +logger = logging.getLogger(__name__) patterns = IosXEPatterns() +settings = IosXESettings() + + +def boot_from_rommon(statemachine, spawn, context): + context['boot_start_time'] = datetime.datetime.now() + context['boot_prompt_count'] = 1 + if context.get('grub_boot_image') is None: + logger.info('No grub_boot_image specified, will use default') + else: + logger.info(f"Using grub_boot_image: {context['grub_boot_image']}") + logger.info('Sending escape to trigger boot menu in GRUB') + # C8KV uses GRUB as its bootloader rather than traditional ROMMON. + # Sending ESC interrupts the GRUB autoboot countdown and presents + # the boot menu, allowing selection of a specific boot image. + spawn.send('\x1b') + -def boot_image(spawn, context, session): - if not context.get('boot_prompt_count'): - context['boot_prompt_count'] = 1 - if context.get('boot_prompt_count') < \ - spawn.settings.MAX_BOOT_ATTEMPTS: - if "boot_cmd" in context: - cmd = context.get('boot_cmd') - elif "image_to_boot" in context: - cmd = "boot {}".format(context['image_to_boot']).strip() - elif spawn.settings.FIND_BOOT_IMAGE: - filesystem = spawn.settings.BOOT_FILESYSTEM if \ - hasattr(spawn.settings, 'BOOT_FILESYSTEM') else 'flash:' - spawn.buffer = '' - spawn.sendline('dir {}'.format(filesystem)) - dir_listing = spawn.expect(patterns.rommon_prompt).match_output - boot_file_regex = spawn.settings.BOOT_FILE_REGEX if \ - hasattr(spawn.settings, 'BOOT_FILE_REGEX') else r'(\S+\.bin)' - m = re.search(boot_file_regex, dir_listing) - if m: - boot_image = m.group(1) - cmd = "boot {}{}".format(filesystem, boot_image) - else: - cmd = "boot" - else: - cmd = "boot" - spawn.sendline(cmd) - context['boot_prompt_count'] += 1 +def send_escape(spawn, session): + session.setdefault('boot_attempt_count', 0) + if session.get('boot_attempt_count') < settings.MAX_BOOT_ATTEMPTS: + spawn.send('\x1b') # send escape character to trigger boot menu in GRUB + session['boot_attempt_count'] += 1 else: - raise Exception("Too many failed boot attempts have been detected.") + err_info = 'Too many failed boot attempts have been detected.' + raise Exception(err_info) +# Create c8kv specific boot from rommon statement +# C8KV is a virtual platform that exclusively uses +# GRUB bootloader - the ROMMON prompt is always grub>, +# never the classic rommon> or switch: prompts. boot_from_rommon_stmt = Statement( pattern=patterns.rommon_prompt, - action=boot_image, + action=send_escape, args=None, loop_continue=True, - continue_timer=False) - -# This list is extended later, see below -boot_from_rommon_statement_list = [ - boot_timeout_stmt, - boot_from_rommon_stmt -] \ No newline at end of file + continue_timer=False +) diff --git a/src/unicon/plugins/iosxe/cat9k/__init__.py b/src/unicon/plugins/iosxe/cat9k/__init__.py index b4498ac0..38c06d4a 100644 --- a/src/unicon/plugins/iosxe/cat9k/__init__.py +++ b/src/unicon/plugins/iosxe/cat9k/__init__.py @@ -26,6 +26,7 @@ class IosxeCat9kHAServiceList(HAIosXEServiceList): def __init__(self): super().__init__() self.reload = svc.HAReloadService + self.rommon = svc.HARommon class IosXECat9kSingleRpConnection(IosXESingleRpConnection): diff --git a/src/unicon/plugins/iosxe/cat9k/service_implementation.py b/src/unicon/plugins/iosxe/cat9k/service_implementation.py index 018a5347..e96986ea 100644 --- a/src/unicon/plugins/iosxe/cat9k/service_implementation.py +++ b/src/unicon/plugins/iosxe/cat9k/service_implementation.py @@ -14,7 +14,7 @@ ) from ..service_implementation import Reload as XEReload -from ..statements import boot_from_rommon_stmt +from ..statements import boot_from_rommon_stmt, fast_reload_confirm_stmt from .statements import boot_interrupt_stmt @@ -23,7 +23,7 @@ class Reload(XEReload): def __init__(self, connection, context, **kwargs): super().__init__(connection, context, **kwargs) # Override the service dialog - self.dialog = Dialog(reload_statement_list + [boot_from_rommon_stmt]) + self.dialog = Dialog(reload_statement_list + [boot_from_rommon_stmt, fast_reload_confirm_stmt]) def pre_service(self, *args, **kwargs): if "image_to_boot" in kwargs: diff --git a/src/unicon/plugins/iosxe/connection_provider.py b/src/unicon/plugins/iosxe/connection_provider.py index 3d4469d8..4bd604c3 100644 --- a/src/unicon/plugins/iosxe/connection_provider.py +++ b/src/unicon/plugins/iosxe/connection_provider.py @@ -38,7 +38,7 @@ def learn_tokens(self): except StateMachineError: pass else: - con.enable() + con.enable(prompt_recovery=con.prompt_recovery) # If the learn token is not enabled we need to see if the device is in Controller-Managed mode # or it's in autonomous mode. If the device is in Controller-Managed mode, enable token discovery. @@ -80,4 +80,3 @@ def learn_tokens(self): context=con.context, prompt_recovery=con.prompt_recovery) super().learn_tokens() - diff --git a/src/unicon/plugins/iosxe/patterns.py b/src/unicon/plugins/iosxe/patterns.py index d62f6dd0..91ad9b0b 100644 --- a/src/unicon/plugins/iosxe/patterns.py +++ b/src/unicon/plugins/iosxe/patterns.py @@ -16,7 +16,7 @@ def __init__(self): self.overwrite_previous = \ r'^.*Overwrite the previous NVRAM configuration\?\[confirm\].*$' self.are_you_sure = \ - r'^.*Are you sure you want to continue\? \(y\/n\)\[y\]:?\s?$' + r'^.*Are you sure you want to continue\? \(y\/n\)(\[y\])?:?\s?$' self.delete_filename = r'^.*Delete filename \[.*\]\?\s*$' self.wish_continue = r'^.*Do you wish to continue\? \[yes\]:\s*$' self.want_continue = r'^.*(Do you want to )?[Cc]ontinue\? \[no\]:\s*$' @@ -60,7 +60,7 @@ def __init__(self): self.default_prompts = r'^(.*?)(wlc|WLC|Router|RouterRP|Switch|ios|switch|.*)([0-9])?(\(standby\))?(\(boot\))?(>|#)' self.telnet_prompt = r'^.*telnet>\s?' self.please_reset = r'^(.*)Please reset' - self.grub_prompt = r'.*The highlighted entry will be (booted|executed) automatically in .*?(\x1b\S+)?\s+' + self.grub_prompt = r'.*(The highlighted entry will be (booted|executed) automatically in .*|Press to boot the selected OS or .c. for a command-line.)(\x1b\S+)?\s+' # The uniclean package expects these patterns to be here. self.enable_prompt = IosXEPatterns().enable_prompt diff --git a/src/unicon/plugins/iosxe/settings.py b/src/unicon/plugins/iosxe/settings.py index db4b2634..35f1ef81 100644 --- a/src/unicon/plugins/iosxe/settings.py +++ b/src/unicon/plugins/iosxe/settings.py @@ -67,6 +67,10 @@ def __init__(self): # Regex to match the entries on the grub boot screen self.GRUB_REGEX_PATTERN = r'(?:\x1b\[7m)?\x1b\[\d;3H.*? ' + # Max retries waiting for all GRUB boot entries to arrive in the buffer + # before selecting a boot image. Each retry sleeps 0.1 s. + self.GRUB_MENU_WAIT_RETRIES = 10 + self.MAINTENANCE_MODE_WAIT_TIME = 30 # 30 seconds self.MAINTENANCE_MODE_TIMEOUT = 60*40 # 40 minutes self.MAINTENANCE_START_COMMAND = 'start maintenance' diff --git a/src/unicon/plugins/iosxe/stack/service_implementation.py b/src/unicon/plugins/iosxe/stack/service_implementation.py index 2d7e9892..971d8e64 100644 --- a/src/unicon/plugins/iosxe/stack/service_implementation.py +++ b/src/unicon/plugins/iosxe/stack/service_implementation.py @@ -20,6 +20,7 @@ stack_reload_stmt_list_1, stack_switchover_stmt_list, stack_factory_reset_stmt_list) from unicon.plugins.generic.service_implementation import Enable as GenericEnable, Execute as GenericExecute +from unicon.plugins.iosxe.cat9k.service_implementation import HARommon as HACat9kRommon utils = StackUtils() @@ -461,99 +462,11 @@ def boot(con): Result = namedtuple('Result', ['result', 'output']) self.result = Result(self.result, reload_output.replace(reload_cmd, '', 1)) -class StackRommon(GenericExecute): +class StackRommon(HACat9kRommon): """ Brings device to the Rommon prompt and executes commands specified """ - def __init__(self, connection, context, **kwargs): - # Connection object will have all the received details - super().__init__(connection, context, **kwargs) - self.start_state = 'rommon' - self.end_state = 'rommon' - self.service_name = 'rommon' - self.dialog = Dialog(stack_reload_stmt_list) - self.timeout = 200 - self.__dict__.update(kwargs) - - def pre_service(self, reload_command=None, timeout=None, *args, **kwargs): - con = self.connection - timeout = timeout or self.timeout - - con.log.info('Checking current state of all subconnections') - rommon_conns = [] - non_rommon_conns = [] - - for subconn in con._subconnections.values(): - state = subconn.state_machine.detect_state(subconn.spawn, subconn.context) - - if state == 'rommon': - rommon_conns.append(subconn) - else: - non_rommon_conns.append(subconn) - - # If ALL are in ROMMON, do nothing and skip synchronization. - if not non_rommon_conns: - con.log.info('Uniform state detected (All ROMMON). Skipping synchronization logic.') - super().pre_service(*args, **kwargs) - return - - reload_conn = non_rommon_conns[0] - - # Ensure break is enabled so the reload stops at ROMMON - reload_conn.state_machine.go_to('enable', reload_conn.spawn, context=reload_conn.context) - boot_info = reload_conn.execute('show boot') - if 'Enable Break = no' in boot_info or 'ENABLE_BREAK variable does not exist' in boot_info: - reload_conn.configure('boot enable-break') - - # Prepare and send reload - reload_cmd = reload_command if reload_command else 'reload' - reload_dialog = self.dialog - if not reload_command: - reload_dialog += Dialog([switch_prompt] + stack_factory_reset_stmt_list) - - reload_conn.sendline(reload_cmd) - try: - reload_dialog.process(reload_conn.spawn, timeout=timeout, context=reload_conn.context) - except Exception as e: - con.log.warning(f'Reload command issued, proceeding to sync loop. (Note: {e})') - - con.log.info('Waiting for all consoles to reach rommon state...') - sleep(self.connection.settings.STACK_ROMMON_SLEEP) + pass - max_wait = 30 - poll_interval = 15 - waited = 0 - while waited < max_wait: - sleep(poll_interval) - waited += poll_interval - - all_rommon = True - for subconn in con._subconnections.values(): - subconn.sendline() - subconn.state_machine.go_to( - 'any', - subconn.spawn, - context=subconn.context, - prompt_recovery=subconn.prompt_recovery, - ) - self.connection.log.debug('{} in state: {}'.format(subconn.alias, subconn.state_machine.current_state)) - - con.log.info(f'Sync in progress... ({waited}/{max_wait}s)') - - if not all_rommon: - raise SubCommandFailure('Timeout: Stack failed to synchronize all consoles to ROMMON.') - - super().pre_service(*args, **kwargs) - # send boot command for each subconnection - for subconn in con._subconnections.values(): - subconn.sendline() - subconn.state_machine.go_to( - 'any', - subconn.spawn, - context=subconn.context, - prompt_recovery=subconn.prompt_recovery, - timeout=subconn.connection_timeout, - ) - self.connection.log.debug('{} in state: {}'.format(subconn.alias, subconn.state_machine.current_state)) class StackEnable(GenericEnable): diff --git a/src/unicon/plugins/iosxe/stack/statemachine.py b/src/unicon/plugins/iosxe/stack/statemachine.py index 32a3e923..965b4a3f 100644 --- a/src/unicon/plugins/iosxe/stack/statemachine.py +++ b/src/unicon/plugins/iosxe/stack/statemachine.py @@ -2,10 +2,12 @@ from unicon.plugins.iosxe.statemachine import IosXESingleRpStateMachine from unicon.plugins.generic.statements import connection_statement_list from unicon.plugins.generic.service_statements import reload_statement_list +from unicon.plugins.iosxe.stack.service_statements import reload_entire_shelf from .patterns import StackIosXEPatterns from unicon.statemachine import State, Path from unicon.eal.dialogs import Dialog from .service_statements import boot_from_rommon +from unicon.plugins.iosxe.cat9k.statements import boot_interrupt_stmt patterns = StackIosXEPatterns() @@ -17,10 +19,12 @@ def create(self): self.remove_path('enable', 'rommon') self.remove_path('rommon', 'disable') self.remove_state('rommon') + + enable_to_rommon_statment_list = reload_statement_list + [boot_interrupt_stmt, reload_entire_shelf] rommon = State('rommon', patterns.rommon_prompt) - enable_to_rommon = Path(self.get_state('enable'), rommon, 'reload', - Dialog(reload_statement_list)) + enable_to_rommon = Path(self.get_state('enable'), rommon, 'redundancy reload shelf', + Dialog(enable_to_rommon_statment_list)) rommon_to_disable = Path(rommon, self.get_state('disable'), boot_from_rommon, Dialog(connection_statement_list)) self.add_state(rommon) diff --git a/src/unicon/plugins/iosxe/statements.py b/src/unicon/plugins/iosxe/statements.py index 71e326ad..43e04820 100644 --- a/src/unicon/plugins/iosxe/statements.py +++ b/src/unicon/plugins/iosxe/statements.py @@ -91,18 +91,32 @@ def grub_prompt_handler(spawn, session, context): context['boot_start_time'] = datetime.now() context['boot_prompt_count'] = 1 - grub_boot_image = context.get('grub_boot_image') - # if no grub_boot_image, do nothing - if not grub_boot_image: - return - - spawn.log.info("Finding an entry that includes the string '{}'". - format(grub_boot_image)) + # If no grub_boot_image is specified, default to '*' which will + # match the currently highlighted entry (marked with '*' prefix + # or \x1b[7m reverse video) and boot it without moving the cursor. + grub_boot_image = context.get('grub_boot_image') or '*' # Regex to match grub screen boot entries on cat9kv lines = re.findall(spawn.settings.GRUB_REGEX_PATTERN, spawn.buffer) - spawn.log.debug(f'Grub lines: {lines}') + # The grub pattern may fire before all menu entries have been buffered, + # e.g. when the PTY delivers data in multiple chunks (slow connections) + # Retry until the desired entry is visible so that + # the correct line index can be calculated. + grub_menu_wait_retries = spawn.settings.GRUB_MENU_WAIT_RETRIES + for attempt in range(grub_menu_wait_retries): + if any(grub_boot_image in line for line in lines): + break + spawn.log.debug( + 'Entry "{}" not yet in buffer, retrying ({}/{})...'.format( + grub_boot_image, attempt + 1, grub_menu_wait_retries)) + time.sleep(0.1) + spawn.read_update_buffer() + lines = re.findall(spawn.settings.GRUB_REGEX_PATTERN, spawn.buffer) + spawn.log.debug(f'Grub lines: {lines}') + + spawn.log.info("Finding an entry that includes the string '{}'". + format(grub_boot_image)) selected_line = None desired_line = None @@ -116,16 +130,17 @@ def grub_prompt_handler(spawn, session, context): desired_line = index if selected_line is None or desired_line is None: - raise Exception("Cannot figure out which image to select! " - "Debug info:\n" - "selected_line: {}\n" - "desired_line: {}\n" - "lines: {}" - .format(selected_line, desired_line, lines)) - - spawn.log.info("Selecting the entry '{}' now.".format(lines[desired_line])) - - num_lines_to_move = desired_line - selected_line + if grub_boot_image != '*': + raise Exception("Cannot figure out which image to select! " + "Debug info:\n" + "selected_line: {}\n" + "desired_line: {}\n" + "lines: {}" + .format(selected_line, desired_line, lines)) + num_lines_to_move = 0 + else: + spawn.log.info("Selecting the entry '{}' now.".format(lines[desired_line])) + num_lines_to_move = desired_line - selected_line spawn.log.debug(f'Lines to move: {num_lines_to_move}') @@ -133,9 +148,10 @@ def grub_prompt_handler(spawn, session, context): 'down': '\x1B[B', 'up': '\x1B[A' } + # If positive we want to move down the list. # If negative we want to move up the list. - if num_lines_to_move >= 0: + if num_lines_to_move > 0: key = 'down' else: key = 'up' @@ -143,9 +159,15 @@ def grub_prompt_handler(spawn, session, context): for _ in range(abs(num_lines_to_move)): spawn.send(keys.get(key)) time.sleep(0.5) + spawn.read_update_buffer() - spawn.sendline() + # Wait for the PTY to finish delivering any remaining GRUB menu + # output before sending Enter. Depending on PTY buffer sizes, data + # may arrive in multiple chunks; without this drain the sendline + # may be lost or interleaved with pending output. time.sleep(0.5) + spawn.read_update_buffer() + spawn.sendline() def boot_image(spawn, context, session): @@ -271,6 +293,13 @@ def boot_image(spawn, context, session): loop_continue=True, continue_timer=False) +fast_reload_confirm_stmt = \ + Statement(pattern=reload_patterns.fast_reload_confirm, + action='sendline()', + args=None, + loop_continue=True, + continue_timer=False) + # This list is extended later, see below boot_from_rommon_statement_list = [ please_reset_stmt, admin_password_stmt, diff --git a/src/unicon/plugins/iosxr/service_implementation.py b/src/unicon/plugins/iosxr/service_implementation.py index ed9354ee..6f9b4972 100755 --- a/src/unicon/plugins/iosxr/service_implementation.py +++ b/src/unicon/plugins/iosxr/service_implementation.py @@ -56,13 +56,14 @@ def pre_service(self, *args, **kwargs): self.connection.spawn, timeout=self.connection.spawn.settings.EXEC_TIMEOUT) - # Avoid state detection for certain commands - cmd = args[0] if args else kwargs.get('command', '') - if cmd and cmd in self.connection.settings.AVOID_STATE_DETECTION_COMMANDS: - self.detect_state = False - super().pre_service(*args, **kwargs) + def call_service(self, command=[], *args, **kwargs): + if command and command in self.connection.settings.AVOID_STATE_DETECTION_COMMANDS \ + and kwargs.get('detect_state') is None: + kwargs['detect_state'] = False + super().call_service(command, *args, **kwargs) + class Configure(svc.Configure): def __init__(self, connection, context, **kwargs): diff --git a/src/unicon/plugins/nxos/n9k/service_implementation.py b/src/unicon/plugins/nxos/n9k/service_implementation.py index e09f8cb5..e41170c4 100644 --- a/src/unicon/plugins/nxos/n9k/service_implementation.py +++ b/src/unicon/plugins/nxos/n9k/service_implementation.py @@ -129,7 +129,7 @@ def call_service(self, class AttachModuleConsoleN9k(AttachModuleConsole): """ Service to attach to N9K module console (linecard) via rlogin. This service provides a context manager to connect to a linecard console - on Nexus 9000 devices using the 'run bash rlogin lc' command. + on Nexus 9000 devices using the 'run bash sudo rlogin lc' command. The service returns a context manager that: - Attaches to the specified module console on entry @@ -194,7 +194,7 @@ def __init__(self, def __enter__(self): """Enter the module console context. - Executes 'run bash rlogin lc' to attach to the module console + Executes 'run bash sudo rlogin lc' to attach to the module console and waits for the module prompt to appear. Returns: self: Context manager instance for command execution @@ -205,14 +205,14 @@ def __enter__(self): self.conn.log.debug('+++ attaching console +++') try: # Execute the rlogin command to attach to module console - self.conn.log.debug('Sending: run bash rlogin lc%s' % (self.module_num)) - self.conn.sendline('run bash rlogin lc%s' % self.module_num) + self.conn.log.debug('Sending: run bash sudo rlogin lc%s' % (self.module_num)) + self.conn.sendline('run bash sudo rlogin lc%s' % self.module_num) - # Wait for module console prompt (supports both user and privileged modes) + # Wait for bash prompt (e.g., root@lc1:~#) patterns = [ - r'module-\d+[#>]', # Standard prompt: module-1# - r'module-\d+\(.*\)[#>]', # Config mode: module-1(config)# - ] + r'root@lc\d+:~#', # Bash prompt for root user on linecard + r'root@lc\d+:\S+#', # Bash prompt with different working directory + ] match_output = self.conn.expect(patterns, timeout=self.timeout) # Get the matched output - use match object instead of buffer @@ -292,10 +292,10 @@ def execute(self, command, timeout=None): # Send the command to the module console self.conn.sendline(command) - # Wait for the module prompt to return + # Wait for the bash prompt to return (since we use sudo rlogin) patterns = [ - r'module-\d+[#>]', # Standard prompt - r'module-\d+\(.*\)[#>]', # Config mode prompt + r'root@lc\d+:~#', # Bash prompt for root user on linecard + r'root@lc\d+:\S+#', # Bash prompt with different working directory ] try: diff --git a/src/unicon/plugins/nxos/service_implementation.py b/src/unicon/plugins/nxos/service_implementation.py index bf84d806..a7f6c181 100644 --- a/src/unicon/plugins/nxos/service_implementation.py +++ b/src/unicon/plugins/nxos/service_implementation.py @@ -1526,6 +1526,11 @@ def __enter__(self): # save the new escape chars self.escape_chars = match.last_match.groupdict()['escape_chars'] + try: + self.conn.expect([r'press ~, to exit'], timeout=self.timeout) + except (SubCommandFailure, TimeoutError): + self.conn.log.warning('Did not see "press ~, to exit" message') + # slow console for _ in range(3): try: diff --git a/src/unicon/plugins/pid_tokens.csv b/src/unicon/plugins/pid_tokens.csv index 3306befd..a4b0a925 100644 --- a/src/unicon/plugins/pid_tokens.csv +++ b/src/unicon/plugins/pid_tokens.csv @@ -1,1585 +1,1641 @@ -pid,os,platform,model,submodel -2501FRAD-FX,ios,c2k,c2500, -2501LANFRAD-FX,ios,c2k,c2500, -8102-64H,iosxr,spitfire,8100, -8201,iosxr,spitfire,8200, -8201-24H8FH,iosxr,spitfire,8200, -8201-32FH,iosxr,spitfire,8200, -8201-32FH-O,sonic,spitfire,8200, -8202,iosxr,spitfire,8200, -8202-32FH-M,iosxr,spitfire,8200, -8804,iosxr,spitfire,8800, -8808,iosxr,spitfire,8800, -8812,iosxr,spitfire,8800, -8818,iosxr,spitfire,8800, -AIR-AP1832I-B-K9,cheetah,ap,air1800, -AIR-AP1832I-C-K9,cheetah,ap,air1800, -AIR-AP1832I-D-K9,cheetah,ap,air1800, -AIR-AP1832I-E-K9,cheetah,ap,air1800, -AIR-AP1832I-F-K9,cheetah,ap,air1800, -AIR-AP1852E-B-K9,cheetah,ap,air1800, -AIR-AP1852E-C-K9,cheetah,ap,air1800, -AIR-AP1852E-D-K9,cheetah,ap,air1800, -AIR-AP1852E-F-K9,cheetah,ap,air1800, -AIR-AP1852E-K-K9,cheetah,ap,air1800, -AIR-AP1852I-B-K9,cheetah,ap,air1800, -AIR-AP1852I-C-K9,cheetah,ap,air1800, -AIR-AP1852I-D-K9,cheetah,ap,air1800, -AIR-AP2802E-A-K9,cheetah,ap,air2800, -AIR-AP2802E-B-K9,cheetah,ap,air2800, -AIR-AP2802E-D-K9,cheetah,ap,air2800, -AIR-AP2802E-F-K9,cheetah,ap,air2800, -AIR-AP2802E-K-K9,cheetah,ap,air2800, -AIR-AP2802I-A-K9,cheetah,ap,air2800, -AIR-AP2802I-B-K9,cheetah,ap,air2800, -AIR-AP2802I-C-K9,cheetah,ap,air2800, -AIR-AP2802I-D-K9,cheetah,ap,air2800, -AIR-AP2802I-E-K9,cheetah,ap,air2800, -AIR-AP2802I-F-K9,cheetah,ap,air2800, -AIR-AP2802I-K-K9,cheetah,ap,air2800, -AIR-AP3802E-A-K9,cheetah,ap,air3800, -AIR-AP3802E-B-K9,cheetah,ap,air3800, -AIR-AP3802E-D-K9,cheetah,ap,air3800, -AIR-AP3802E-F-K9,cheetah,ap,air3800, -AIR-AP3802E-K-K9,cheetah,ap,air3800, -AIR-AP3802I-A-K9,cheetah,ap,air3800, -AIR-AP3802I-B-K9,cheetah,ap,air3800, -AIR-AP3802I-C-K9,cheetah,ap,air3800, -AIR-AP3802I-D-K9,cheetah,ap,air3800, -AIR-AP3802I-E-K9,cheetah,ap,air3800, -AIR-AP3802I-F-K9,cheetah,ap,air3800, -AIR-AP3802I-K-K9,cheetah,ap,air3800, -AIR-AP4800-B-K9,cheetah,ap,air4800, -AIR-AP4800-D-K9,cheetah,ap,air4800, -AIR-AP4800-E-K9,cheetah,ap,air4800, -AIR-AP4800-F-K9,cheetah,ap,air4800, -AIR-AP4800-K-K9,cheetah,ap,air4800, -AS2511-RJ,ios,c2500,c2511, -ASR-9001,iosxr,asr9k,asr9000, -ASR-9001-S,iosxr,asr9k,asr9000, -ASR-9006-SYS,iosxr,asr9k,asr9000, -ASR-9010-SYS,iosxr,asr9k,asr9000, -ASR-9901,iosxr,asr9k,asr9900, -ASR-9903,iosxr,asr9k,asr9900, -ASR-9904,iosxr,asr9k,asr9900, -ASR-9906,iosxr,asr9k,asr9900, -ASR-9910,iosxr,asr9k,asr9900, -ASR-9912,iosxr,asr9k,asr9900, -ASR-9922,iosxr,asr9k,asr9900, -ASR1001,iosxe,asr1k,asr1001, -ASR1001-2XOC3POS,iosxe,asr1k,asr1001, -ASR1001-4X1GE,iosxe,asr1k,asr1001, -ASR1001-4XT3,iosxe,asr1k,asr1001, -ASR1001-8XCHT1E1,iosxe,asr1k,asr1001, -ASR1001-HDD,iosxe,asr1k,asr1001, -ASR1002,iosxe,asr1k,asr1002, -ASR1002-F,iosxe,asr1k,asr1002, -ASR1004,iosxe,asr1k,asr1004, -ASR1006,iosxe,asr1k,asr1006, -ASR1006-X,iosxe,asr1k,asr1006, -ASR1009-X,iosxe,asr1k,asr1009, -ASR1013,iosxe,asr1k,asr1013, -C1000-16FP-2G-L,iosxe,cat1k,c1000, -C1000-16P-2G-L,iosxe,cat1k,c1000, -C1000-16P-E-2G-L,iosxe,cat1k,c1000, -C1000-16T-2G-L,iosxe,cat1k,c1000, -C1000-16T-E-2G-L,iosxe,cat1k,c1000, -C1000-24FP-4G-L,iosxe,cat1k,c1000, -C1000-24FP-4X-L,iosxe,cat1k,c1000, -C1000-24P-4G-L,iosxe,cat1k,c1000, -C1000-24P-4X-L,iosxe,cat1k,c1000, -C1000-24PP-4G-L,iosxe,cat1k,c1000, -C1000-24T-4G-L,iosxe,cat1k,c1000, -C1000-24T-4X-L,iosxe,cat1k,c1000, -C1000-48FP-4G-L,iosxe,cat1k,c1000, -C1000-48FP-4X-L,iosxe,cat1k,c1000, -C1000-48P-4G-L,iosxe,cat1k,c1000, -C1000-48P-4X-L,iosxe,cat1k,c1000, -C1000-48PP-4G-L,iosxe,cat1k,c1000, -C1000-48T-4G-L,iosxe,cat1k,c1000, -C1000-48T-4X-L,iosxe,cat1k,c1000, -C1000-8FP-2G-L,iosxe,cat1k,c1000, -C1000-8FP-E-2G-L,iosxe,cat1k,c1000, -C1000-8P-2G-L,iosxe,cat1k,c1000, -C1000-8P-E-2G-L,iosxe,cat1k,c1000, -C1000-8T-2G-L,iosxe,cat1k,c1000, -C1000-8T-E-2G-L,iosxe,cat1k,c1000, -C1000FE-24P-4G-L,iosxe,cat1k,c1000, -C1000FE-24T-4G-L,iosxe,cat1k,c1000, -C1000FE-48P-4G-L,iosxe,cat1k,c1000, -C1000FE-48T-4G-L,iosxe,cat1k,c1000, -C1100TG-1N32A,iosxe,isr,c1100, -C1101-4P,iosxe,c1k,c1100, -C1101-4PLTEP,iosxe,c1k,c1100, -C1101-4PLTEPWA,iosxe,c1k,c1100, -C1101-4PLTEPWB,iosxe,c1k,c1100, -C1101-4PLTEPWD,iosxe,c1k,c1100, -C1101-4PLTEPWE,iosxe,c1k,c1100, -C1101-4PLTEPWF,iosxe,c1k,c1100, -C1101-4PLTEPWH,iosxe,c1k,c1100, -C1101-4PLTEPWN,iosxe,c1k,c1100, -C1101-4PLTEPWQ,iosxe,c1k,c1100, -C1101-4PLTEPWR,iosxe,c1k,c1100, -C1101-4PLTEPWZ,iosxe,c1k,c1100, -C1109-2PLTEAU,iosxe,c1k,c1100, -C1109-2PLTEGB,iosxe,c1k,c1100, -C1109-2PLTEIN,iosxe,c1k,c1100, -C1109-2PLTEJN,iosxe,c1k,c1100, -C1109-2PLTEUS,iosxe,c1k,c1100, -C1109-2PLTEVZ,iosxe,c1k,c1100, -C1109-4PLTE2P,iosxe,c1k,c1100, -C1109-4PLTE2PWA,iosxe,c1k,c1100, -C1109-4PLTE2PWB,iosxe,c1k,c1100, -C1109-4PLTE2PWD,iosxe,c1k,c1100, -C1109-4PLTE2PWE,iosxe,c1k,c1100, -C1109-4PLTE2PWF,iosxe,c1k,c1100, -C1109-4PLTE2PWH,iosxe,c1k,c1100, -C1109-4PLTE2PWN,iosxe,c1k,c1100, -C1109-4PLTE2PWQ,iosxe,c1k,c1100, -C1109-4PLTE2PWR,iosxe,c1k,c1100, -C1109-4PLTE2PWZ,iosxe,c1k,c1100, -C1111-4P,iosxe,c1k,c1100, -C1111-4PLTEEA,iosxe,c1k,c1100, -C1111-4PLTELA,iosxe,c1k,c1100, -C1111-4PWA,iosxe,c1k,c1100, -C1111-4PWB,iosxe,c1k,c1100, -C1111-4PWD,iosxe,c1k,c1100, -C1111-4PWE,iosxe,c1k,c1100, -C1111-4PWF,iosxe,c1k,c1100, -C1111-4PWH,iosxe,c1k,c1100, -C1111-4PWN,iosxe,c1k,c1100, -C1111-4PWQ,iosxe,c1k,c1100, -C1111-4PWR,iosxe,c1k,c1100, -C1111-4PWZ,iosxe,c1k,c1100, -C1111-8P,iosxe,c1k,c1100, -C1111-8PLTEEA,iosxe,c1k,c1100, -C1111-8PLTEEAWA,iosxe,c1k,c1100, -C1111-8PLTEEAWB,iosxe,c1k,c1100, -C1111-8PLTEEAWE,iosxe,c1k,c1100, -C1111-8PLTEEAWR,iosxe,c1k,c1100, -C1111-8PLTELA,iosxe,c1k,c1100, -C1111-8PLTELAWD,iosxe,c1k,c1100, -C1111-8PLTELAWF,iosxe,c1k,c1100, -C1111-8PLTELAWH,iosxe,c1k,c1100, -C1111-8PLTELAWN,iosxe,c1k,c1100, -C1111-8PLTELAWQ,iosxe,c1k,c1100, -C1111-8PLTELAWS,iosxe,c1k,c1100, -C1111-8PLTELAWZ,iosxe,c1k,c1100, -C1111-8PWA,iosxe,c1k,c1100, -C1111-8PWB,iosxe,c1k,c1100, -C1111-8PWE,iosxe,c1k,c1100, -C1111-8PWF,iosxe,c1k,c1100, -C1111-8PWH,iosxe,c1k,c1100, -C1111-8PWN,iosxe,c1k,c1100, -C1111-8PWQ,iosxe,c1k,c1100, -C1111-8PWR,iosxe,c1k,c1100, -C1111-8PWS,iosxe,c1k,c1100, -C1111-8PWZ,iosxe,c1k,c1100, -C1111X-8P,iosxe,c1k,c1100, -C1112-8P,iosxe,c1k,c1100, -C1112-8PLTEEA,iosxe,c1k,c1100, -C1112-8PLTEEAWE,iosxe,c1k,c1100, -C1112-8PWE,iosxe,c1k,c1100, -C1113-8P,iosxe,c1k,c1100, -C1113-8PLTEEA,iosxe,c1k,c1100, -C1113-8PLTEEAWB,iosxe,c1k,c1100, -C1113-8PLTEEAWE,iosxe,c1k,c1100, -C1113-8PLTELA,iosxe,c1k,c1100, -C1113-8PLTELAWA,iosxe,c1k,c1100, -C1113-8PLTELAWZ,iosxe,c1k,c1100, -C1113-8PM,iosxe,c1k,c1100, -C1113-8PMLTEEA,iosxe,c1k,c1100, -C1113-8PMWE,iosxe,c1k,c1100, -C1113-8PWA,iosxe,c1k,c1100, -C1113-8PWB,iosxe,c1k,c1100, -C1113-8PWE,iosxe,c1k,c1100, -C1113-8PWZ,iosxe,c1k,c1100, -C1116-4P,iosxe,c1k,c1100, -C1116-4PLTEEA,iosxe,c1k,c1100, -C1116-4PLTEEAWE,iosxe,c1k,c1100, -C1116-4PWE,iosxe,c1k,c1100, -C1117-4P,iosxe,c1k,c1100, -C1117-4PLTEEA,iosxe,c1k,c1100, -C1117-4PLTEEAWA,iosxe,c1k,c1100, -C1117-4PLTEEAWE,iosxe,c1k,c1100, -C1117-4PLTELA,iosxe,c1k,c1100, -C1117-4PLTELAWZ,iosxe,c1k,c1100, -C1117-4PM,iosxe,c1k,c1100, -C1117-4PMLTEEA,iosxe,c1k,c1100, -C1117-4PMLTEEAWE,iosxe,c1k,c1100, -C1117-4PMWE,iosxe,c1k,c1100, -C1117-4PWA,iosxe,c1k,c1100, -C1117-4PWE,iosxe,c1k,c1100, -C1117-4PWZ,iosxe,c1k,c1100, -C1118-8P,iosxe,c1k,c1100, -C1121-4P,iosxe,c1k,c1100, -C1121-4PLTEP,iosxe,c1k,c1100, -C1121-8P,iosxe,c1k,c1100, -C1121-8PLTEP,iosxe,c1k,c1100, -C1121-8PLTEPWB,iosxe,c1k,c1100, -C1121-8PLTEPWE,iosxe,c1k,c1100, -C1121-8PLTEPWQ,iosxe,c1k,c1100, -C1121-8PLTEPWZ,iosxe,c1k,c1100, -C1121X-8P,iosxe,c1k,c1100, -C1121X-8PLTEP,iosxe,c1k,c1100, -C1121X-8PLTEPWA,iosxe,c1k,c1100, -C1121X-8PLTEPWB,iosxe,c1k,c1100, -C1121X-8PLTEPWE,iosxe,c1k,c1100, -C1121X-8PLTEPWZ,iosxe,c1k,c1100, -C1126-8PLTEP,iosxe,c1k,c1100, -C1126X-8PLTEP,iosxe,c1k,c1100, -C1127-8PLTEP,iosxe,c1k,c1100, -C1127-8PMLTEP,iosxe,c1k,c1100, -C1127X-8PLTEP,iosxe,c1k,c1100, -C1127X-8PMLTEP,iosxe,c1k,c1100, -C1128-8PLTEP,iosxe,c1k,c1100, -C1161-8P,iosxe,c1k,c1100, -C1161-8PLTEP,iosxe,c1k,c1100, -C1161X-8P,iosxe,c1k,c1100, -C1161X-8PLTEP,iosxe,c1k,c1100, -C1861-SRST-B/K9,ios,c1k,c1800, -C1861-SRST-C-B/K9,ios,c1k,c1800, -C1861-SRST-C-F/K9,ios,c1k,c1800, -C1861-SRST-F/K9,ios,c1k,c1800, -C1861-UC-2BRI-K9,ios,c1k,c1800, -C1861-UC-4FXO-K9,ios,c1k,c1800, -C1861W-SRST-B/K9,ios,c1k,c1800, -C1861W-SRST-C-B/K9,ios,c1k,c1800, -C1861W-SRST-C-F/K9,ios,c1k,c1800, -C1861W-SRST-F/K9,ios,c1k,c1800, -C1861W-UC-2BRI-K9,ios,c1k,c1800, -C1861W-UC-4FXO-K9,ios,c1k,c1800, -C3270ENC-FO-K9,ios,c3k,c3200, -C3270ENC-K9,ios,c3k,c3200, -C3825-NOVPN,ios,c3k,c3800, -C3845-NOVPN,ios,c3k,c3800, -C6800IA-48FPD,iosxe,cat6k,c6800, -C6800IA-48FPDR,iosxe,cat6k,c6800, -C6800IA-48TD,iosxe,cat6k,c6800, -C6807-XL,iosxe,cat6k,c6800, -C6816-X-LE,iosxe,cat6k,c6800, -C6824-X-LE-40G,iosxe,cat6k,c6800, -C6832-X-LE,iosxe,cat6k,c6800, -C6840-X-LE-40G,iosxe,cat6k,c6800, -C6880-X,iosxe,cat6k,c6800, -C6880-X-LE,iosxe,cat6k,c6800, -C8000V,iosxe,c8kv,c8000v, -C8200-1N-4T,iosxe,cat8k,c8200, -C8200-UCPE-1N8,iosxe,cat8k,c8200, -C8500-12X,iosxe,cat8k,c8500, -C8500-12X4QC,iosxe,cat8k,c8500, -C8500L-8S4X,iosxe,cat8k,c8500, -C8510-CHAS5,iosxe,cat8k,c8500, -C8510CSR-SKIT-AC,iosxe,cat8k,c8500, -C8540-CHAS13,iosxe,cat8k,c8500, -C8540CSR-SKIT-AC,iosxe,cat8k,c8500, -C9105AXI-A,cheetah,ap,c9100ap, -C9105AXI-B,cheetah,ap,c9100ap, -C9105AXI-C,cheetah,ap,c9100ap, -C9105AXI-D,cheetah,ap,c9100ap, -C9105AXI-E,cheetah,ap,c9100ap, -C9105AXI-F,cheetah,ap,c9100ap, -C9105AXI-G,cheetah,ap,c9100ap, -C9105AXI-H,cheetah,ap,c9100ap, -C9105AXI-I,cheetah,ap,c9100ap, -C9105AXI-K,cheetah,ap,c9100ap, -C9105AXI-N,cheetah,ap,c9100ap, -C9105AXI-Q,cheetah,ap,c9100ap, -C9105AXI-R,cheetah,ap,c9100ap, -C9105AXI-S,cheetah,ap,c9100ap, -C9105AXI-T,cheetah,ap,c9100ap, -C9105AXI-Z,cheetah,ap,c9100ap, -C9105AXW-A,cheetah,ap,c9100ap, -C9105AXW-B,cheetah,ap,c9100ap, -C9105AXW-C,cheetah,ap,c9100ap, -C9105AXW-D,cheetah,ap,c9100ap, -C9105AXW-E,cheetah,ap,c9100ap, -C9105AXW-F,cheetah,ap,c9100ap, -C9105AXW-G,cheetah,ap,c9100ap, -C9105AXW-H,cheetah,ap,c9100ap, -C9105AXW-I,cheetah,ap,c9100ap, -C9105AXW-K,cheetah,ap,c9100ap, -C9105AXW-N,cheetah,ap,c9100ap, -C9105AXW-Q,cheetah,ap,c9100ap, -C9105AXW-R,cheetah,ap,c9100ap, -C9105AXW-S,cheetah,ap,c9100ap, -C9105AXW-T,cheetah,ap,c9100ap, -C9105AXW-Z,cheetah,ap,c9100ap, -C9115AXE-A,cheetah,ap,c9100ap, -C9115AXE-B,cheetah,ap,c9100ap, -C9115AXE-C,cheetah,ap,c9100ap, -C9115AXE-D,cheetah,ap,c9100ap, -C9115AXE-E,cheetah,ap,c9100ap, -C9115AXE-F,cheetah,ap,c9100ap, -C9115AXE-G,cheetah,ap,c9100ap, -C9115AXE-H,cheetah,ap,c9100ap, -C9115AXE-I,cheetah,ap,c9100ap, -C9115AXE-K,cheetah,ap,c9100ap, -C9115AXE-N,cheetah,ap,c9100ap, -C9115AXE-Q,cheetah,ap,c9100ap, -C9115AXE-R,cheetah,ap,c9100ap, -C9115AXE-S,cheetah,ap,c9100ap, -C9115AXE-T,cheetah,ap,c9100ap, -C9115AXE-Z,cheetah,ap,c9100ap, -C9115AXI-A,cheetah,ap,c9100ap, -C9115AXI-B,cheetah,ap,c9100ap, -C9115AXI-C,cheetah,ap,c9100ap, -C9115AXI-D,cheetah,ap,c9100ap, -C9115AXI-E,cheetah,ap,c9100ap, -C9115AXI-F,cheetah,ap,c9100ap, -C9115AXI-G,cheetah,ap,c9100ap, -C9115AXI-H,cheetah,ap,c9100ap, -C9115AXI-I,cheetah,ap,c9100ap, -C9115AXI-K,cheetah,ap,c9100ap, -C9115AXI-N,cheetah,ap,c9100ap, -C9115AXI-Q,cheetah,ap,c9100ap, -C9115AXI-R,cheetah,ap,c9100ap, -C9115AXI-S,cheetah,ap,c9100ap, -C9115AXI-T,cheetah,ap,c9100ap, -C9115AXI-Z,cheetah,ap,c9100ap, -C9117AXI-A,cheetah,ap,c9100ap, -C9117AXI-B,cheetah,ap,c9100ap, -C9117AXI-C,cheetah,ap,c9100ap, -C9117AXI-D,cheetah,ap,c9100ap, -C9117AXI-E,cheetah,ap,c9100ap, -C9117AXI-F,cheetah,ap,c9100ap, -C9117AXI-G,cheetah,ap,c9100ap, -C9117AXI-H,cheetah,ap,c9100ap, -C9117AXI-I,cheetah,ap,c9100ap, -C9117AXI-K,cheetah,ap,c9100ap, -C9117AXI-N,cheetah,ap,c9100ap, -C9117AXI-Q,cheetah,ap,c9100ap, -C9117AXI-R,cheetah,ap,c9100ap, -C9117AXI-S,cheetah,ap,c9100ap, -C9117AXI-T,cheetah,ap,c9100ap, -C9117AXI-Z,cheetah,ap,c9100ap, -C9120AXE-A,cheetah,ap,c9100ap, -C9120AXE-B,cheetah,ap,c9100ap, -C9120AXE-C,cheetah,ap,c9100ap, -C9120AXE-D,cheetah,ap,c9100ap, -C9120AXE-E,cheetah,ap,c9100ap, -C9120AXE-F,cheetah,ap,c9100ap, -C9120AXE-G,cheetah,ap,c9100ap, -C9120AXE-H,cheetah,ap,c9100ap, -C9120AXE-I,cheetah,ap,c9100ap, -C9120AXE-K,cheetah,ap,c9100ap, -C9120AXE-N,cheetah,ap,c9100ap, -C9120AXE-Q,cheetah,ap,c9100ap, -C9120AXE-R,cheetah,ap,c9100ap, -C9120AXE-S,cheetah,ap,c9100ap, -C9120AXE-T,cheetah,ap,c9100ap, -C9120AXE-Z,cheetah,ap,c9100ap, -C9120AXI-A,cheetah,ap,c9100ap, -C9120AXI-B,cheetah,ap,c9100ap, -C9120AXI-C,cheetah,ap,c9100ap, -C9120AXI-D,cheetah,ap,c9100ap, -C9120AXI-E,cheetah,ap,c9100ap, -C9120AXI-F,cheetah,ap,c9100ap, -C9120AXI-G,cheetah,ap,c9100ap, -C9120AXI-H,cheetah,ap,c9100ap, -C9120AXI-I,cheetah,ap,c9100ap, -C9120AXI-K,cheetah,ap,c9100ap, -C9120AXI-N,cheetah,ap,c9100ap, -C9120AXI-Q,cheetah,ap,c9100ap, -C9120AXI-R,cheetah,ap,c9100ap, -C9120AXI-S,cheetah,ap,c9100ap, -C9120AXI-T,cheetah,ap,c9100ap, -C9120AXI-Z,cheetah,ap,c9100ap, -C9120AXP-A,cheetah,ap,c9100ap, -C9120AXP-B,cheetah,ap,c9100ap, -C9120AXP-C,cheetah,ap,c9100ap, -C9120AXP-D,cheetah,ap,c9100ap, -C9120AXP-E,cheetah,ap,c9100ap, -C9120AXP-F,cheetah,ap,c9100ap, -C9120AXP-G,cheetah,ap,c9100ap, -C9120AXP-H,cheetah,ap,c9100ap, -C9120AXP-I,cheetah,ap,c9100ap, -C9120AXP-K,cheetah,ap,c9100ap, -C9120AXP-N,cheetah,ap,c9100ap, -C9120AXP-Q,cheetah,ap,c9100ap, -C9120AXP-R,cheetah,ap,c9100ap, -C9120AXP-S,cheetah,ap,c9100ap, -C9120AXP-T,cheetah,ap,c9100ap, -C9120AXP-Z,cheetah,ap,c9100ap, -C9130AXE-A,cheetah,ap,c9100ap, -C9130AXE-B,cheetah,ap,c9100ap, -C9130AXE-C,cheetah,ap,c9100ap, -C9130AXE-D,cheetah,ap,c9100ap, -C9130AXE-E,cheetah,ap,c9100ap, -C9130AXE-F,cheetah,ap,c9100ap, -C9130AXE-G,cheetah,ap,c9100ap, -C9130AXE-H,cheetah,ap,c9100ap, -C9130AXE-I,cheetah,ap,c9100ap, -C9130AXE-K,cheetah,ap,c9100ap, -C9130AXE-N,cheetah,ap,c9100ap, -C9130AXE-Q,cheetah,ap,c9100ap, -C9130AXE-R,cheetah,ap,c9100ap, -C9130AXE-S,cheetah,ap,c9100ap, -C9130AXE-T,cheetah,ap,c9100ap, -C9130AXE-Z,cheetah,ap,c9100ap, -C9130AXI-A,cheetah,ap,c9100ap, -C9130AXI-B,cheetah,ap,c9100ap, -C9130AXI-C,cheetah,ap,c9100ap, -C9130AXI-D,cheetah,ap,c9100ap, -C9130AXI-E,cheetah,ap,c9100ap, -C9130AXI-F,cheetah,ap,c9100ap, -C9130AXI-G,cheetah,ap,c9100ap, -C9130AXI-H,cheetah,ap,c9100ap, -C9130AXI-I,cheetah,ap,c9100ap, -C9130AXI-K,cheetah,ap,c9100ap, -C9130AXI-N,cheetah,ap,c9100ap, -C9130AXI-Q,cheetah,ap,c9100ap, -C9130AXI-R,cheetah,ap,c9100ap, -C9130AXI-S,cheetah,ap,c9100ap, -C9130AXI-T,cheetah,ap,c9100ap, -C9130AXI-Z,cheetah,ap,c9100ap, -C9136I-B,cheetah,ap,c9100ap, -C9136I-D,cheetah,ap,c9100ap, -C9136I-E,cheetah,ap,c9100ap, -C9136I-F,cheetah,ap,c9100ap, -C9136I-K,cheetah,ap,c9100ap, -C9200-24P,iosxe,cat9k,c9200, -C9200-24PB,iosxe,cat9k,c9200, -C9200-24PXG,iosxe,cat9k,c9200, -C9200-24T,iosxe,cat9k,c9200, -C9200-48P,iosxe,cat9k,c9200, -C9200-48PB,iosxe,cat9k,c9200, -C9200-48PL,iosxe,cat9k,c9200, -C9200-48PXG,iosxe,cat9k,c9200, -C9200-48T,iosxe,cat9k,c9200, -C9200L-24P-4G,iosxe,cat9k,c9200, -C9200L-24P-4X,iosxe,cat9k,c9200, -C9200L-24PXG-2Y,iosxe,cat9k,c9200, -C9200L-24PXG-4X,iosxe,cat9k,c9200, -C9200L-24T-4G,iosxe,cat9k,c9200, -C9200L-24T-4X,iosxe,cat9k,c9200, -C9200L-48P-4G,iosxe,cat9k,c9200, -C9200L-48P-4X,iosxe,cat9k,c9200, -C9200L-48PL-4G,iosxe,cat9k,c9200, -C9200L-48PL-4X,iosxe,cat9k,c9200, -C9200L-48PXG-2Y,iosxe,cat9k,c9200, -C9200L-48PXG-4X,iosxe,cat9k,c9200, -C9200L-48T-4G,iosxe,cat9k,c9200, -C9200L-48T-4X,iosxe,cat9k,c9200, -C9300-24H,iosxe,cat9k,c9300, -C9300-24P,iosxe,cat9k,c9300, -C9300-24S,iosxe,cat9k,c9300, -C9300-24T,iosxe,cat9k,c9300, -C9300-24U,iosxe,cat9k,c9300, -C9300-24UB,iosxe,cat9k,c9300, -C9300-24UX,iosxe,cat9k,c9300, -C9300-24UXB,iosxe,cat9k,c9300, -C9300-48H,iosxe,cat9k,c9300, -C9300-48P,iosxe,cat9k,c9300, -C9300-48S,iosxe,cat9k,c9300, -C9300-48T,iosxe,cat9k,c9300, -C9300-48U,iosxe,cat9k,c9300, -C9300-48UB,iosxe,cat9k,c9300, -C9300-48UN,iosxe,cat9k,c9300, -C9300-48UXM,iosxe,cat9k,c9300, -C9300L-24P-4G,iosxe,cat9k,c9300, -C9300L-24P-4X,iosxe,cat9k,c9300, -C9300L-24T-4G,iosxe,cat9k,c9300, -C9300L-24T-4X,iosxe,cat9k,c9300, -C9300L-24UXG-2Q,iosxe,cat9k,c9300, -C9300L-24UXG-4X,iosxe,cat9k,c9300, -C9300L-48P-4G,iosxe,cat9k,c9300, -C9300L-48P-4X,iosxe,cat9k,c9300, -C9300L-48PF-4G,iosxe,cat9k,c9300, -C9300L-48PF-4X,iosxe,cat9k,c9300, -C9300L-48T-4G,iosxe,cat9k,c9300, -C9300L-48T-4X,iosxe,cat9k,c9300, -C9300L-48UXG-2Q,iosxe,cat9k,c9300, -C9300L-48UXG-4X,iosxe,cat9k,c9300, -C9404R,iosxe,cat9k,c9400, -C9407R,iosxe,cat9k,c9400, -C9410R,iosxe,cat9k,c9400, -C9500-12Q,iosxe,cat9k,c9500, -C9500-16X,iosxe,cat9k,c9500, -C9500-24Q,iosxe,cat9k,c9500, -C9500-24Y4C,iosxe,cat9k,c9500, -C9500-32C,iosxe,cat9k,c9500, -C9500-32QC,iosxe,cat9k,c9500, -C9500-40X,iosxe,cat9k,c9500, -C9500-48Y4C,iosxe,cat9k,c9500, -C9500X-60L4D,iosxe,cat9k,c9500, -C9606R,iosxe,cat9k,c9600, -C9800-40-K9,iosxe,cat9k,c9800, -C9800-80-K9,iosxe,cat9k,c9800, -C9800-CL-K9,iosxe,cat9k,c9800,c9800cl -C9800-L-C-K9,iosxe,cat9k,c9800,c9800l -C9800-L-F-K9,iosxe,cat9k,c9800,c9800l -CGR-2010/K9,ios,c2k,c2000, -CGR1120/K9,iosxe,c1k,c1100, -CGR1240/K9,ios,c1k,c1200, -CHAS-7505,ios,c7k,c7500, -CHAS-7505-DC,ios,c7k,c7500, -CHAS-7507,ios,c7k,c7500, -CHAS-7507-DC,ios,c7k,c7500, -CHAS-7513,ios,c7k,c7500, -CHAS-7513-DC,ios,c7k,c7500, -CHAS-7576,ios,c7k,c7500, -CHAS-7576-DC,ios,c7k,c7500, -CISCO1001,ios,c1k,c1000, -CISCO1002,ios,c1k,c1000, -CISCO1003,ios,c1k,c1000, -CISCO1004,ios,c1k,c1000, -CISCO1004-I,ios,c1k,c1000, -CISCO1005,ios,c1k,c1000, -CISCO1020,ios,c1k,c1000, -CISCO1401,ios,c1k,c1400, -CISCO1407,ios,c1k,c1400, -CISCO1417,ios,c1k,c1400, -CISCO1601,ios,c1k,c1600, -CISCO1601-R,ios,c1k,c1600, -CISCO1602,ios,c1k,c1600, -CISCO1602-R,ios,c1k,c1600, -CISCO1603,ios,c1k,c1600, -CISCO1603-R,ios,c1k,c1600, -CISCO1604,ios,c1k,c1600, -CISCO1604-R,ios,c1k,c1600, -CISCO1605-R,ios,c1k,c1600, -CISCO1701-K9,ios,c1k,c1700, -CISCO1710-VPN-M/K9,ios,c1k,c1700, -CISCO1711-VPN/K9,ios,c1k,c1700, -CISCO1712-VPN/K9,ios,c1k,c1700, -CISCO1718,ios,c1k,c1700, -CISCO1720,ios,c1k,c1700, -CISCO1721,ios,c1k,c1700, -CISCO1750,ios,c1k,c1700, -CISCO1750-2V,ios,c1k,c1700, -CISCO1750-4V,ios,c1k,c1700, -CISCO1750-ADSL,ios,c1k,c1700, -CISCO1751,ios,c1k,c1700, -CISCO1760,ios,c1k,c1700, -CISCO1801,ios,c1k,c1800, -CISCO1801-M,ios,c1k,c1800, -CISCO1801-M/K9,ios,c1k,c1800, -CISCO1801/K9,ios,c1k,c1800, -CISCO1801W-AG-A/K9,ios,c1k,c1800, -CISCO1801W-AG-B/K9,ios,c1k,c1800, -CISCO1801W-AG-C/K9,ios,c1k,c1800, -CISCO1801W-AG-E/K9,ios,c1k,c1800, -CISCO1801W-AG-N/K9,ios,c1k,c1800, -CISCO1801WM-AGB/K9,ios,c1k,c1800, -CISCO1801WM-AGE/K9,ios,c1k,c1800, -CISCO1802,ios,c1k,c1800, -CISCO1802/K9,ios,c1k,c1800, -CISCO1802W-AG-E/K9,ios,c1k,c1800, -CISCO1803/K9,ios,c1k,c1800, -CISCO1803W-AG-A/K9,ios,c1k,c1800, -CISCO1803W-AG-B/K9,ios,c1k,c1800, -CISCO1803W-AG-E/K9,ios,c1k,c1800, -CISCO1805-D,ios,c1k,c1800, -CISCO1805-D/K9,ios,c1k,c1800, -CISCO1805-EJ,ios,c1k,c1800, -CISCO1811/K9,ios,c1k,c1800, -CISCO1811W-AG-A/K9,ios,c1k,c1800, -CISCO1811W-AG-B/K9,ios,c1k,c1800, -CISCO1811W-AG-C/K9,ios,c1k,c1800, -CISCO1811W-AG-N/K9,ios,c1k,c1800, -CISCO1812-J/K9,ios,c1k,c1800, -CISCO1812/K9,ios,c1k,c1800, -CISCO1812W-AG-C/K9,ios,c1k,c1800, -CISCO1812W-AG-E/K9,ios,c1k,c1800, -CISCO1812W-AG-J/K9,ios,c1k,c1800, -CISCO1812W-AG-P/K9,ios,c1k,c1800, -CISCO1841,ios,c1k,c1800, -CISCO1841C/K9,ios,c1k,c1800, -CISCO1905/K9,ios,c1k,c1900, -CISCO1921/K9,ios,c1k,c1900, -CISCO1921DC/K9,ios,c1k,c1900, -CISCO1941/K9,ios,c1k,c1900, -CISCO2102,ios,c2k,c2100, -CISCO2202,ios,c2k,c2200, -CISCO2501,ios,c2k,c2500, -CISCO2502,ios,c2k,c2500, -CISCO2502LF,ios,c2k,c2500, -CISCO2503,ios,c2k,c2500, -CISCO2504,ios,c2k,c2500, -CISCO2505,ios,c2k,c2500, -CISCO2506,ios,c2k,c2500, -CISCO2507,ios,c2k,c2500, -CISCO2513,ios,c2k,c2500, -CISCO2514,ios,c2k,c2500, -CISCO2515,ios,c2k,c2500, -CISCO2516,ios,c2k,c2500, -CISCO2517,ios,c2k,c2500, -CISCO2518,ios,c2k,c2500, -CISCO2519,ios,c2k,c2500, -CISCO2520,ios,c2k,c2500, -CISCO2520-XAD,ios,c2k,c2500, -CISCO2521,ios,c2k,c2500, -CISCO2522,ios,c2k,c2500, -CISCO2523,ios,c2k,c2500, -CISCO2524,ios,c2k,c2500, -CISCO2525,ios,c2k,c2500, -CISCO2801,ios,c2k,c2800, -CISCO2801C/K9,ios,c2k,c2800, -CISCO2811,ios,c2k,c2800, -CISCO2811C/K9,ios,c2k,c2800, -CISCO2821,ios,c2k,c2800, -CISCO2821C/K9,ios,c2k,c2800, -CISCO2851,ios,c2k,c2800, -CISCO2901/K9,ios,c2k,c2900, -CISCO2911-T/K9,ios,c2k,c2900, -CISCO2911/K9,ios,c2k,c2900, -CISCO2921/K9,ios,c2k,c2900, -CISCO2951/K9,ios,c2k,c2900, -CISCO3101,ios,c3k,c3100, -CISCO3102,ios,c3k,c3100, -CISCO3103,ios,c3k,c3100, -CISCO3104,ios,c3k,c3100, -CISCO3202,ios,c3k,c3200, -CISCO3204,ios,c3k,c3200, -CISCO3220,ios,c3k,c3200, -CISCO3251MARC,ios,c3k,c3200, -CISCO3725,ios,c3k,c3700, -CISCO3745,ios,c3k,c3700, -CISCO3825,ios,c3k,c3800, -CISCO3825C/K9,ios,c3k,c3800, -CISCO3845,ios,c3k,c3800, -CISCO3845C/K9,ios,c3k,c3800, -CISCO3925-CHASSIS,ios,c3k,c3900, -CISCO3945-CHASSIS,ios,c3k,c3900, -CISCO4000,iosxe,c4k,c4000, -CISCO4500,iosxe,c4k,c4500, -CISCO5915RA-K9,ios,c5k,c5900, -CISCO5915RC-K9,ios,c5k,c5900, -CISCO5921-K9,ios,c5k,c5900, -CISCO5930-K9,ios,c5k,c5900, -CISCO5940RA-K9,ios,c5k,c5900, -CISCO5940RC-K9,ios,c5k,c5900, -CISCO7000,ios,c7k,c7000, -CISCO7010,ios,c7k,c7000, -CISCO7120-4T1,ios,c7k,c7100, -CISCO7120-AE3,ios,c7k,c7100, -CISCO7120-AT3,ios,c7k,c7100, -CISCO7120-E3,ios,c7k,c7100, -CISCO7120-SMI3,ios,c7k,c7100, -CISCO7120-T3,ios,c7k,c7100, -CISCO7140-2AE3,ios,c7k,c7100, -CISCO7140-2AT3,ios,c7k,c7100, -CISCO7140-2E3,ios,c7k,c7100, -CISCO7140-2FE,ios,c7k,c7100, -CISCO7140-2MM3,ios,c7k,c7100, -CISCO7140-2T3,ios,c7k,c7100, -CISCO7140-8T,ios,c7k,c7100, -CISCO7201,ios,c7k,c7200, -CISCO7202,ios,c7k,c7200, -CISCO7204,ios,c7k,c7200, -CISCO7206,ios,c7k,c7200, -CISCO7301,ios,c7k,c7300, -CISCO7304,ios,c7k,c7300, -CISCO7401ASR-BB,ios,c7k,c7400, -CISCO7401ASR-CP,ios,c7k,c7400, -CISCO7603,ios,c7k,c7600, -CISCO7603-S,ios,c7k,c7600, -CISCO7604,ios,c7k,c7600, -CISCO7606,ios,c7k,c7600, -CISCO7606-S,ios,c7k,c7600, -CISCO7609,ios,c7k,c7600, -CISCO7609-S,ios,c7k,c7600, -CISCO7613,ios,c7k,c7600, -CISCO7613-S,ios,c7k,c7600, -CR-4430-B,iosxe,c4k,c4400, -CR-4430-K9,iosxe,c4k,c4400, -CR-4450-ICDN-K9,iosxe,c4k,c4400, -CW9162I-B,cheetah,ap,cw9100, -CW9162I-D,cheetah,ap,cw9100, -CW9162I-E,cheetah,ap,cw9100, -CW9162I-F,cheetah,ap,cw9100, -CW9162I-K,cheetah,ap,cw9100, -CW9164I-B,cheetah,ap,cw9100, -CW9164I-D,cheetah,ap,cw9100, -CW9164I-E,cheetah,ap,cw9100, -CW9164I-F,cheetah,ap,cw9100, -CW9164I-K,cheetah,ap,cw9100, -CW9164I-ROW,cheetah,ap,cw9100, -CW9166D1-B,cheetah,ap,cw9100, -CW9166D1-D,cheetah,ap,cw9100, -CW9166D1-E,cheetah,ap,cw9100, -CW9166D1-F,cheetah,ap,cw9100, -CW9166D1-K,cheetah,ap,cw9100, -CW9166I-B,cheetah,ap,cw9100, -CW9166I-D,cheetah,ap,cw9100, -CW9166I-E,cheetah,ap,cw9100, -CW9166I-F,cheetah,ap,cw9100, -CW9166I-K,cheetah,ap,cw9100, -CW9176I,cheetah,ap,cw9100, -CW9178I,cheetah,ap,cw9100, -CW9800H1,iosxe,cat9k,c9800, -CW9800H2,iosxe,cat9k,c9800, -CW9800L,iosxe,cat9k,c9800, -ESS-3300-24T-CON-A,iosxe,ess3k,ess3300, -ESS-3300-24T-CON-E,iosxe,ess3k,ess3300, -ESS-3300-24T-NCP-A,iosxe,ess3k,ess3300, -ESS-3300-24T-NCP-E,iosxe,ess3k,ess3300, -ESS-3300-CON-A,iosxe,ess3k,ess3300, -ESS-3300-CON-E,iosxe,ess3k,ess3300, -ESS-3300-NCP-A,iosxe,ess3k,ess3300, -ESS-3300-NCP-E,iosxe,ess3k,ess3300, -ESS-9300-10X-E,iosxe,ess9k,es9300, -ESS-9300-8X16T-W,iosxe,ess9k,es9300, -IE-3100-18T2C-CC-E,iosxe,ie3k,ie3100, -IE-3100-18T2C-E,iosxe,ie3k,ie3100, -IE-3100-3P1U2S-E,iosxe,ie3k,ie3100, -IE-3100-4P2S-E,iosxe,ie3k,ie3100, -IE-3100-4T2S-E,iosxe,ie3k,ie3100, -IE-3100-6P2U2C-E,iosxe,ie3k,ie3100, -IE-3100-8P2C-E,iosxe,ie3k,ie3100, -IE-3100-8T2C-E,iosxe,ie3k,ie3100, -IE-3100-8T4S-E,iosxe,ie3k,ie3100, -IE-3100H-6FT2T-E,iosxe,ie3k,ie3100h, -IE-3100H-8T-E,iosxe,ie3k,ie3100h, -IE-3105-18T2C-E,iosxe,ie3k,ie3105, -IE-3105-8T2C-E,iosxe,ie3k,ie3105, -IE-3200-8P2S-E,iosxe,ie3k,ie3200, -IE-3200-8T2S-E,iosxe,ie3k,ie3200, -IE-3300-8P2S-A,iosxe,ie3k,ie3300, -IE-3300-8P2S-E,iosxe,ie3k,ie3300, -IE-3300-8T2S-A,iosxe,ie3k,ie3300, -IE-3300-8T2S-E,iosxe,ie3k,ie3300, -IE-3300-8T2X-A,iosxe,ie3k,ie3300, -IE-3300-8T2X-E,iosxe,ie3k,ie3300, -IE-3300-8U2X-A,iosxe,ie3k,ie3300, -IE-3300-8U2X-E,iosxe,ie3k,ie3300, -IE-3400-8P2S-A,iosxe,ie3k,ie3400, -IE-3400-8P2S-E,iosxe,ie3k,ie3400, -IE-3400-8T2S-A,iosxe,ie3k,ie3400, -IE-3400-8T2S-E,iosxe,ie3k,ie3400, -IE-3400H-16FT-A,iosxe,ie3k,ie3400h, -IE-3400H-16FT-E,iosxe,ie3k,ie3400h, -IE-3400H-16T-A,iosxe,ie3k,ie3400h, -IE-3400H-16T-E,iosxe,ie3k,ie3400h, -IE-3400H-24FT-A,iosxe,ie3k,ie3400h, -IE-3400H-24FT-E,iosxe,ie3k,ie3400h, -IE-3400H-24T-A,iosxe,ie3k,ie3400h, -IE-3400H-24T-E,iosxe,ie3k,ie3400h, -IE-3400H-8FT-A,iosxe,ie3k,ie3400h, -IE-3400H-8FT-E,iosxe,ie3k,ie3400h, -IE-3400H-8T-A,iosxe,ie3k,ie3400h, -IE-3400H-8T-E,iosxe,ie3k,ie3400h, -IE-3500-8P3S-A,iosxe,ie3k,ie3500, -IE-3500-8P3S-E,iosxe,ie3k,ie3500, -IE-3500-8T3S-A,iosxe,ie3k,ie3500, -IE-3500-8T3S-E,iosxe,ie3k,ie3500, -IE-3500-8T3X-A,iosxe,ie3k,ie3500, -IE-3500-8T3X-E,iosxe,ie3k,ie3500, -IE-3500-8U3X-A,iosxe,ie3k,ie3500, -IE-3500-8U3X-E,iosxe,ie3k,ie3500, -IE-3500H-12FT4T-A,iosxe,ie3k,ie3500h, -IE-3500H-12FT4T-E,iosxe,ie3k,ie3500h, -IE-3500H-12P2MU2XA,iosxe,ie3k,ie3500h, -IE-3500H-12P2MU2XE,iosxe,ie3k,ie3500h, -IE-3500H-14P2T-A,iosxe,ie3k,ie3500h, -IE-3500H-14P2T-E,iosxe,ie3k,ie3500h, -IE-3500H-16T-A,iosxe,ie3k,ie3500h, -IE-3500H-16T-E,iosxe,ie3k,ie3500h, -IE-3500H-20FT4T-A,iosxe,ie3k,ie3500h, -IE-3500H-20FT4T-E,iosxe,ie3k,ie3500h, -IE-3500H-24T-A,iosxe,ie3k,ie3500h, -IE-3500H-24T-E,iosxe,ie3k,ie3500h, -IE-3500H-8T-A,iosxe,ie3k,ie3500h, -IE-3500H-8T-E,iosxe,ie3k,ie3500h, -IE-3505-8P3S-A,iosxe,ie3k,ie3505, -IE-3505-8P3S-E,iosxe,ie3k,ie3505, -IE-3505-8T3S-A,iosxe,ie3k,ie3505, -IE-3505-8T3S-E,iosxe,ie3k,ie3505, -IE-3505H-16T-A,iosxe,ie3k,ie3505h, -IE-3505H-16T-E,iosxe,ie3k,ie3505h, -IE-9310-16P8S4X-A,iosxe,ie9k,ie9310, -IE-9310-16P8S4X-E,iosxe,ie9k,ie9310, -IE-9310-26S2C-A,iosxe,ie9k,ie9310, -IE-9310-26S2C-E,iosxe,ie9k,ie9310, -IE-9320-16P8U4X-A,iosxe,ie9k,ie9320, -IE-9320-16P8U4X-E,iosxe,ie9k,ie9320, -IE-9320-22S2C4X-A,iosxe,ie9k,ie9320, -IE-9320-22S2C4X-E,iosxe,ie9k,ie9320, -IE-9320-24P4S-A,iosxe,ie9k,ie9320, -IE-9320-24P4S-E,iosxe,ie9k,ie9320, -IE-9320-24P4X-A,iosxe,ie9k,ie9320, -IE-9320-24P4X-E,iosxe,ie9k,ie9320, -IE-9320-24T4X-A,iosxe,ie9k,ie9320, -IE-9320-24T4X-E,iosxe,ie9k,ie9320, -IE-9320-26S2C-A,iosxe,ie9k,ie9320, -IE-9320-26S2C-E,iosxe,ie9k,ie9320, -IR1101-K9,iosxe,ir1k,ir1101, -IR1833-K9,iosxe,ir1k,ir1800, -ISR1100-4G,iosxe,isr1k,isr1100, -ISR1100-4GLTEGB,iosxe,isr1k,isr1100, -ISR1100-4GLTENA,iosxe,isr1k,isr1100, -ISR1100-6G,iosxe,isr1k,isr1100, -ISR1100X-4G,iosxe,isr1k,isr1100, -ISR1100X-6G,iosxe,isr1k,isr1100, -ISR4221-B/K9,iosxe,isr4k,isr4200, -ISR4221/K9,iosxe,isr4k,isr4200, -ISR4221X/K9,iosxe,isr4k,isr4200, -ISR4321-B/K9,iosxe,isr4k,isr4300, -ISR4321/K9,iosxe,isr4k,isr4300, -ISR4331-B/K9,iosxe,isr4k,isr4300, -ISR4331-DC/K9,iosxe,isr4k,isr4300, -ISR4331/K9,iosxe,isr4k,isr4300, -ISR4351/K9,iosxe,isr4k,isr4300, -ISR4431/K9,iosxe,isr4k,isr4400, -ISR4461/K9,iosxe,isr4k,isr4400, -ME-C3750-24TE-M,iosxe,cat3k,c3700, -MWR-1900-27,ios,c1k,c1900, -N1K-1110-S,nxos,n1k,n1100, -N1K-1110-X,nxos,n1k,n1100, -N1K-C1010,nxos,n1k,n1000, -N1K-C1010-X,nxos,n1k,n1000, -N2K-B22FTS-P,nxos,n2k,n2000, -N2K-C2148T-1GE,nxos,n2k,n2000, -N2K-C2224TP-1GE,nxos,n2k,n2200, -N2K-C2232PP-10GE,nxos,n2k,n2000, -N2K-C2232TM-10GE,nxos,n2k,n2200, -N2K-C2232TM-E-10GE,nxos,n2k,n2200, -N2K-C2248PQ-10GE,nxos,n2k,n2200, -N2K-C2248TP-1GE,nxos,n2k,n2200, -N2K-C2248TP-E-1GE,nxos,n2k,n2000, -N2K-C2332TQ-10GT,nxos,n2k,n2300, -N2K-C2348TQ,nxos,n2k,n2300, -N2K-C2348TQ-E,nxos,n2k,n2300, -N2K-C2348UPQ,nxos,n2k,n2300, -N3K-C3016Q-40GE,nxos,n3k,n3000, -N3K-C3048TP-1GE,nxos,n3k,n3000, -N3K-C3064PQ,nxos,n3k,n3000, -N3K-C3064PQ-10GE,nxos,n3k,n3000, -N3K-C3064PQ-10GX,nxos,n3k,n3000, -N3K-C3064TQ-10GT,nxos,n3k,n3000, -N3K-C31108PC-V,nxos,n3k,n3100, -N3K-C31108TC-V,nxos,n3k,n3100, -N3K-C31128PQ-10GE,nxos,n3k,n3100, -N3K-C3132C-Z,nxos,n3k,n3100, -N3K-C3132Q-40GE,nxos,n3k,n3100, -N3K-C3132Q-40GX,nxos,n3k,n3100, -N3K-C3132Q-V,nxos,n3k,n3100, -N3K-C3132Q-XL,nxos,n3k,n3100, -N3K-C3164Q-40GE,nxos,n3k,n3100, -N3K-C3172PQ-10GE,nxos,n3k,n3100, -N3K-C3172PQ-XL,nxos,n3k,n3100, -N3K-C3172TQ-10GT,nxos,n3k,n3100, -N3K-C3172TQ-XL,nxos,n3k,n3100, -N3K-C3232C,nxos,n3k,n3200, -N3K-C3264C-E,nxos,n3k,n3200, -N3K-C3264Q,nxos,n3k,n3200, -N3K-C3408-S,nxos,n3k,n3400, -N3K-C34180YC,nxos,n3k,n3400, -N3K-C34200YC-SM,nxos,n3k,n3400, -N3K-C3432D-S,nxos,n3k,n3400, -N3K-C3464C,nxos,n3k,n3400, -N3K-C3548P-10G,nxos,n3k,n3500, -N3K-C3548P-10GX,nxos,n3k,n3500, -N3K-C3548P-XL,nxos,n3k,n3500, -N3K-C36180YC-R,nxos,n3k,n3600, -N3K-C3636C-R,nxos,n3k,n3600, -N4K-4001I-XPX,nxos,n4k,n4000, -N4K-4005I-XPX,nxos,n4k,n4000, -N540-12Z20G-SYS-A,iosxr,ncs500,ncs540, -N540-24Q8L2DD-SYS,iosxr,ncs500,ncs540, -N540-24Z8Q2C-M,iosxr,ncs500,ncs540, -N540-28Z4C-SYS-A,iosxr,ncs500,ncs540, -N540-ACC-SYS,iosxr,ncs500,ncs540, -N540-FH-CSR-SYS,iosxr,ncs500,ncs540, -N540X-4Z14G2Q-A,iosxr,ncs500,ncs540x, -N540X-8Z16G-SYS-A,iosxr,ncs500,ncs540x, -N540X-ACC-SYS,iosxr,ncs500,ncs540x, -N5K-C5010P-BF,nxos,n5k,n5000, -N5K-C5020P-BF,nxos,n5k,n5000, -N5K-C5548P,nxos,n5k,n5500, -N5K-C5548UP,nxos,n5k,n5500, -N5K-C5596T,nxos,n5k,n5500, -N5K-C5596UP,nxos,n5k,n5500, -N5K-C56128P,nxos,n5k,n5600, -N5K-C5624Q,nxos,n5k,n5600, -N5K-C5648Q,nxos,n5k,n5600, -N5K-C5672UP,nxos,n5k,n5600, -N5K-C5672UP-16G,nxos,n5k,n5600, -N5K-C5696Q,nxos,n5k,n5600, -N6K-C6001-64P,nxos,n6k,n6000, -N6K-C6001-64T,nxos,n6k,n6000, -N6K-C6004,nxos,n6k,n6000, -N6K-C6004-96Q,nxos,n6k,n6000, -N77-C7702,nxos,n7k,n7700, -N77-C7706,nxos,n7k,n7700, -N77-C7710,nxos,n7k,n7700, -N77-C7718,nxos,n7k,n7700, -N7K-C7004,nxos,n7k,n7000, -N7K-C7009,nxos,n7k,n7000, -N7K-C7010,nxos,n7k,n7000, -N7K-C7018,nxos,n7k,n7000, -N9K-C92160YC-X,nxos,n9k,n9200, -N9K-C92300YC,nxos,n9k,n9200, -N9K-C92304QC,nxos,n9k,n9200, -N9K-C9232C,nxos,n9k,n9200, -N9K-C92348GC-X,nxos,n9k,n9200, -N9K-C9236C,nxos,n9k,n9200, -N9K-C9272Q,nxos,n9k,n9200, -N9K-C93108TC-EX,nxos,n9k,n9300, -N9K-C93108TC-EX-24,nxos,n9k,n9300, -N9K-C93108TC-FX,nxos,n9k,n9300, -N9K-C93108TC-FX-24,nxos,n9k,n9300, -N9K-C93108TC-FX3P,nxos,n9k,n9300, -N9K-C93120TX,nxos,n9k,n9300, -N9K-C93128TX,nxos,n9k,n9300, -N9K-C9316D-GX,nxos,n9k,n9300, -N9K-C93180LC-EX,nxos,n9k,n9300, -N9K-C93180YC-EX,nxos,n9k,n9300, -N9K-C93180YC-EX-24,nxos,n9k,n9300, -N9K-C93180YC-FX,nxos,n9k,n9300, -N9K-C93180YC-FX-24,nxos,n9k,n9300, -N9K-C93180YC-FX3S,nxos,n9k,n9300, -N9K-C93216TC-FX2,nxos,n9k,n9300, -N9K-C93240YC-FX2,nxos,n9k,n9300, -N9K-C93240YC-FX2Z,nxos,n9k,n9300, -N9K-C9332C,nxos,n9k,n9300, -N9K-C9332PQ,nxos,n9k,n9300, -N9K-C93360YC-FX2,nxos,n9k,n9300, -N9K-C9336C-FX2,nxos,n9k,n9300, -N9K-C9336C-FX2-E,nxos,n9k,n9300, -N9K-C9336PQ,nxos,n9k,n9300, -N9K-C9348GC-FXP,nxos,n9k,n9300, -N9K-C9358GY-FXP,nxos,n9k,n9300, -N9K-C93600CD-GX,nxos,n9k,n9300, -N9K-C9364C,nxos,n9k,n9300, -N9K-C9364C-GX,nxos,n9k,n9300, -N9K-C9372PX,nxos,n9k,n9300, -N9K-C9372PX-E,nxos,n9k,n9300, -N9K-C9372TX,nxos,n9k,n9300, -N9K-C9372TX-E,nxos,n9k,n9300, -N9K-C9396PX,nxos,n9k,n9300, -N9K-C9396TX,nxos,n9k,n9300, -N9K-C9504,nxos,n9k,n9500, -N9K-C9508,nxos,n9k,n9500, -N9K-C9516,nxos,n9k,n9500, -NCS-5001,iosxr,ncs5k,ncs5000, -NCS-5002,iosxr,ncs5k,ncs5000, -NCS-5011,iosxr,ncs5k,ncs5000, -NCS-5064,iosxr,ncs5k,ncs5000, -NCS-5501,iosxr,ncs5k,ncs5500, -NCS-5501-SE,iosxr,ncs5k,ncs5500, -NCS-5502,iosxr,ncs5k,ncs5500, -NCS-5502-SE,iosxr,ncs5k,ncs5500, -NCS-5504,iosxr,ncs5k,ncs5500, -NCS-5508,iosxr,ncs5k,ncs5500, -NCS-5516,iosxr,ncs5k,ncs5500, -NCS-55A1-24Q6H-S,iosxr,ncs5k,ncs55a1, -NCS-55A1-36H-S,iosxr,ncs5k,ncs55a1, -NCS-55A1-36H-SE-S,iosxr,ncs5k,ncs55a1, -NCS-55A1-48Q6H,iosxr,ncs5k,ncs55a1, -NCS-57C3-MOD-SYS,iosxr,ncs5k,ncs5700, -NCS-57C3-MODS-SYS,iosxr,ncs5k,ncs5700, -NCS-6008,iosxr,ncs6k,ncs6000, -NCS-F-CHASS,iosxr,ncs6k,ncs6000, -NCS1001-K9,iosxr,ncs1k,ncs1000, -NCS1002-K9,iosxr,ncs1k,ncs1000, -NCS1002-LIC-K9,iosxr,ncs1k,ncs1000, -NCS1004,iosxr,ncs1k,ncs1000, -NCS2002-SA,iosxr,ncs2k,ncs2000, -NCS2006-SA,iosxr,ncs2k,ncs2000, -NCS2015-SA-AC,iosxr,ncs2k,ncs2000, -NCS2015-SA-DC,iosxr,ncs2k,ncs2000, -NCS4009-SA-AC,iosxr,ncs4k,ncs4000, -NCS4009-SA-DC,iosxr,ncs4k,ncs4000, -NCS4016-SA-AC,iosxr,ncs4k,ncs4000, -NCS4016-SA-DC,iosxr,ncs4k,ncs4000, -NCS4201-SA,iosxe,ncs4k,ncs4200, -NCS4202-SA,iosxe,ncs4k,ncs4200, -NCS4206-SA,iosxe,ncs4k,ncs4200, -NCS4216-F2B-SA,iosxe,ncs4k,ncs4200, -NCS4216-SA,iosxe,ncs4k,ncs4200, -NCS4KF-SA-DC,iosxr,ncs4k,ncs4000, -Nexus1000V,nxos,n1k,n1000, -Nexus1000Vh,nxos,n1k,n1000, -Nexus9000v,nxos,n9k,n9000, -R-IOSXRV9000-CC,iosxr,iosxrv,xrv9000, -SPIAD2901-8FXS/K9,ios,c2k,c2900, -WS-C1000,iosxe,cat1k,c1000, -WS-C1131,iosxe,cat1k,c1100, -WS-C1134,iosxe,cat1k,c1100, -WS-C1141,iosxe,cat1k,c1100, -WS-C1143,iosxe,cat1k,c1100, -WS-C1144,iosxe,cat1k,c1100, -WS-C1201,iosxe,cat1k,c1200, -WS-C1202,iosxe,cat1k,c1200, -WS-C1211,iosxe,cat1k,c1200, -WS-C1212,iosxe,cat1k,c1200, -WS-C1221,iosxe,cat1k,c1200, -WS-C1241,iosxe,cat1k,c1200, -WS-C1251,iosxe,cat1k,c1200, -WS-C1261,iosxe,cat1k,c1200, -WS-C1400,iosxe,cat1k,c1400, -WS-C1600,iosxe,cat1k,c1600, -WS-C1700,iosxe,cat1k,c1700, -WS-C1800,iosxe,cat1k,c1800, -WS-C1912-A,iosxe,cat1k,c1900, -WS-C1912-EN,iosxe,cat1k,c1900, -WS-C1912C-A,iosxe,cat1k,c1900, -WS-C1912C-EN,iosxe,cat1k,c1900, -WS-C1924-A,iosxe,cat1k,c1900, -WS-C1924-EN,iosxe,cat1k,c1900, -WS-C1924-EN-DC,iosxe,cat1k,c1900, -WS-C1924C-A,iosxe,cat1k,c1900, -WS-C1924C-EN,iosxe,cat1k,c1900, -WS-C1924F-A,iosxe,cat1k,c1900, -WS-C1924F-EN,iosxe,cat1k,c1900, -WS-C2100,iosxe,cat2k,c2100, -WS-C2350-48TD-S,iosxe,cat2k,c2300, -WS-C2350-48TD-SD,iosxe,cat2k,c2300, -WS-C2360-48TD-S,iosxe,cat2k,c2300, -WS-C2600,iosxe,cat2k,c2600, -WS-C2802,iosxe,cat2k,c2800, -WS-C2808,iosxe,cat2k,c2800, -WS-C2822-A,iosxe,cat2k,c2800, -WS-C2822-EN,iosxe,cat2k,c2800, -WS-C2828-A,iosxe,cat2k,c2800, -WS-C2828-EN,iosxe,cat2k,c2800, -WS-C2901,iosxe,cat2k,c2900, -WS-C2902,iosxe,cat2k,c2900, -WS-C2908-XL,iosxe,cat2k,c2900, -WS-C2912-LRE-XL,iosxe,cat2k,c2900, -WS-C2912-XL-A,iosxe,cat2k,c2900, -WS-C2912-XL-EN,iosxe,cat2k,c2900, -WS-C2912MF-XL,iosxe,cat2k,c2900, -WS-C2916M-XL,iosxe,cat2k,c2900, -WS-C2918-24TC-C,iosxe,cat2k,c2900, -WS-C2918-24TT-C,iosxe,cat2k,c2900, -WS-C2918-48TC-C,iosxe,cat2k,c2900, -WS-C2918-48TT-C,iosxe,cat2k,c2900, -WS-C2924-LRE-XL,iosxe,cat2k,c2900, -WS-C2924-XL,iosxe,cat2k,c2900, -WS-C2924-XL-A,iosxe,cat2k,c2900, -WS-C2924-XL-EN,iosxe,cat2k,c2900, -WS-C2924C-XL,iosxe,cat2k,c2900, -WS-C2924C-XL-A,iosxe,cat2k,c2900, -WS-C2924C-XL-EN,iosxe,cat2k,c2900, -WS-C2924M-XL-A,iosxe,cat2k,c2900, -WS-C2924M-XL-EN,iosxe,cat2k,c2900, -WS-C2924M-XL-EN-DC,iosxe,cat2k,c2900, -WS-C2926F,iosxe,cat2k,c2900, -WS-C2926GL,iosxe,cat2k,c2900, -WS-C2926GS,iosxe,cat2k,c2900, -WS-C2926T,iosxe,cat2k,c2900, -WS-C2928-24LT-C,iosxe,cat2k,c2900, -WS-C2928-24TC-C,iosxe,cat2k,c2900, -WS-C2928-48TC-C,iosxe,cat2k,c2900, -WS-C2940-8TF-S,iosxe,cat2k,c2900, -WS-C2940-8TT-S,iosxe,cat2k,c2900, -WS-C2948G,iosxe,cat2k,c2900, -WS-C2948G-GE-TX,iosxe,cat2k,c2900, -WS-C2948G-L3,iosxe,cat2k,c2900, -WS-C2948GL3-DC,iosxe,cat2k,c2900, -WS-C2950-12,iosxe,cat2k,c2900, -WS-C2950-24,iosxe,cat2k,c2900, -WS-C2950C-24,iosxe,cat2k,c2900, -WS-C2950G-12-EI,iosxe,cat2k,c2900, -WS-C2950G-24-EI,iosxe,cat2k,c2900, -WS-C2950G-24-EI-DC,iosxe,cat2k,c2900, -WS-C2950G-48-EI,iosxe,cat2k,c2900, -WS-C2950LRE-24-997,iosxe,cat2k,c2900, -WS-C2950ST-24-LRE,iosxe,cat2k,c2900, -WS-C2950ST-8-LRE,iosxe,cat2k,c2900, -WS-C2950SX-24,iosxe,cat2k,c2900, -WS-C2950SX-48-SI,iosxe,cat2k,c2900, -WS-C2950T-24,iosxe,cat2k,c2900, -WS-C2950T-48-SI,iosxe,cat2k,c2900, -WS-C2955C-12,iosxe,cat2k,c2900, -WS-C2955S-12,iosxe,cat2k,c2900, -WS-C2955T-12,iosxe,cat2k,c2900, -WS-C2960+24LC-L,iosxe,cat2k,c2900, -WS-C2960+24LC-S,iosxe,cat2k,c2900, -WS-C2960+24PC-L,iosxe,cat2k,c2900, -WS-C2960+24PC-S,iosxe,cat2k,c2900, -WS-C2960+24TC-L,iosxe,cat2k,c2900, -WS-C2960+24TC-S,iosxe,cat2k,c2900, -WS-C2960+48PST-L,iosxe,cat2k,c2900, -WS-C2960+48PST-S,iosxe,cat2k,c2900, -WS-C2960+48TC-L,iosxe,cat2k,c2900, -WS-C2960+48TC-S,iosxe,cat2k,c2900, -WS-C2960-24-S,iosxe,cat2k,c2900, -WS-C2960-24LC-S,iosxe,cat2k,c2900, -WS-C2960-24LT-L,iosxe,cat2k,c2900, -WS-C2960-24PC-L,iosxe,cat2k,c2900, -WS-C2960-24PC-S,iosxe,cat2k,c2900, -WS-C2960-24TC-L,iosxe,cat2k,c2900, -WS-C2960-24TC-S,iosxe,cat2k,c2900, -WS-C2960-24TT-L,iosxe,cat2k,c2900, -WS-C2960-48PST-L,iosxe,cat2k,c2900, -WS-C2960-48PST-S,iosxe,cat2k,c2900, -WS-C2960-48TC-L,iosxe,cat2k,c2900, -WS-C2960-48TC-S,iosxe,cat2k,c2900, -WS-C2960-48TT-L,iosxe,cat2k,c2900, -WS-C2960-48TT-S,iosxe,cat2k,c2900, -WS-C2960-8TC-L,iosxe,cat2k,c2900, -WS-C2960-8TC-S,iosxe,cat2k,c2900, -WS-C2960C-12PC-L,iosxe,cat2k,c2900, -WS-C2960C-8PC-L,iosxe,cat2k,c2900, -WS-C2960C-8TC-L,iosxe,cat2k,c2900, -WS-C2960C-8TC-S,iosxe,cat2k,c2900, -WS-C2960CG-8TC-L,iosxe,cat2k,c2900, -WS-C2960CPD-8PT-L,iosxe,cat2k,c2900, -WS-C2960CPD-8TT-L,iosxe,cat2k,c2900, -WS-C2960CX-8PC-L,iosxe,cat2k,c2900, -WS-C2960CX-8TC-L,iosxe,cat2k,c2900, -WS-C2960G-24TC-L,iosxe,cat2k,c2900, -WS-C2960G-48TC-L,iosxe,cat2k,c2900, -WS-C2960G-8TC-L,iosxe,cat2k,c2900, -WS-C2960L-16PS-LL,iosxe,cat2k,c2900, -WS-C2960L-16TS-LL,iosxe,cat2k,c2900, -WS-C2960L-24PQ-LL,iosxe,cat2k,c2900, -WS-C2960L-24PS-LL,iosxe,cat2k,c2900, -WS-C2960L-24TQ-LL,iosxe,cat2k,c2900, -WS-C2960L-24TS-LL,iosxe,cat2k,c2900, -WS-C2960L-48PQ-LL,iosxe,cat2k,c2900, -WS-C2960L-48PS-LL,iosxe,cat2k,c2900, -WS-C2960L-48TQ-LL,iosxe,cat2k,c2900, -WS-C2960L-48TS-LL,iosxe,cat2k,c2900, -WS-C2960L-8PS-LL,iosxe,cat2k,c2900, -WS-C2960L-8TS-LL,iosxe,cat2k,c2900, -WS-C2960L-SM-16PS,iosxe,cat2k,c2900, -WS-C2960L-SM-16TS,iosxe,cat2k,c2900, -WS-C2960L-SM-24PQ,iosxe,cat2k,c2900, -WS-C2960L-SM-24PS,iosxe,cat2k,c2900, -WS-C2960L-SM-24TQ,iosxe,cat2k,c2900, -WS-C2960L-SM-24TS,iosxe,cat2k,c2900, -WS-C2960L-SM-48PQ,iosxe,cat2k,c2900, -WS-C2960L-SM-48PS,iosxe,cat2k,c2900, -WS-C2960L-SM-48TQ,iosxe,cat2k,c2900, -WS-C2960L-SM-48TS,iosxe,cat2k,c2900, -WS-C2960L-SM-8PS,iosxe,cat2k,c2900, -WS-C2960L-SM-8TS,iosxe,cat2k,c2900, -WS-C2960PD-8TT-L,iosxe,cat2k,c2900, -WS-C2960R+24PC-L,iosxe,cat2k,c2900, -WS-C2960R+24PC-S,iosxe,cat2k,c2900, -WS-C2960R+24TC-L,iosxe,cat2k,c2900, -WS-C2960R+24TC-S,iosxe,cat2k,c2900, -WS-C2960R+48PST-L,iosxe,cat2k,c2900, -WS-C2960R+48PST-S,iosxe,cat2k,c2900, -WS-C2960R+48TC-L,iosxe,cat2k,c2900, -WS-C2960R+48TC-S,iosxe,cat2k,c2900, -WS-C2960RX-24PS-L,iosxe,cat2k,c2900, -WS-C2960RX-24TS-L,iosxe,cat2k,c2900, -WS-C2960RX-48FPD-L,iosxe,cat2k,c2900, -WS-C2960RX-48FPS-L,iosxe,cat2k,c2900, -WS-C2960RX-48LPD-L,iosxe,cat2k,c2900, -WS-C2960RX-48LPS-L,iosxe,cat2k,c2900, -WS-C2960RX-48TS-L,iosxe,cat2k,c2900, -WS-C2960S-24PD-L,iosxe,cat2k,c2900, -WS-C2960S-24PS-L,iosxe,cat2k,c2900, -WS-C2960S-24TD-L,iosxe,cat2k,c2900, -WS-C2960S-24TS-L,iosxe,cat2k,c2900, -WS-C2960S-24TS-S,iosxe,cat2k,c2900, -WS-C2960S-48FPD-L,iosxe,cat2k,c2900, -WS-C2960S-48FPS-L,iosxe,cat2k,c2900, -WS-C2960S-48LPD-L,iosxe,cat2k,c2900, -WS-C2960S-48LPS-L,iosxe,cat2k,c2900, -WS-C2960S-48TD-L,iosxe,cat2k,c2900, -WS-C2960S-48TS-L,iosxe,cat2k,c2900, -WS-C2960S-48TS-S,iosxe,cat2k,c2900, -WS-C2960S-F24PS-L,iosxe,cat2k,c2900, -WS-C2960S-F24TS-L,iosxe,cat2k,c2900, -WS-C2960S-F24TS-S,iosxe,cat2k,c2900, -WS-C2960S-F48FPS-L,iosxe,cat2k,c2900, -WS-C2960S-F48LPS-L,iosxe,cat2k,c2900, -WS-C2960S-F48TS-L,iosxe,cat2k,c2900, -WS-C2960S-F48TS-S,iosxe,cat2k,c2900, -WS-C2960X-24PD-L,iosxe,cat2k,c2900, -WS-C2960X-24PS-L,iosxe,cat2k,c2900, -WS-C2960X-24PSQ-L,iosxe,cat2k,c2900, -WS-C2960X-24TD-L,iosxe,cat2k,c2900, -WS-C2960X-24TS-L,iosxe,cat2k,c2900, -WS-C2960X-24TS-LL,iosxe,cat2k,c2900, -WS-C2960X-48FPD-L,iosxe,cat2k,c2900, -WS-C2960X-48FPS-L,iosxe,cat2k,c2900, -WS-C2960X-48LPD-L,iosxe,cat2k,c2900, -WS-C2960X-48LPS-L,iosxe,cat2k,c2900, -WS-C2960X-48TD-L,iosxe,cat2k,c2900, -WS-C2960X-48TS-L,iosxe,cat2k,c2900, -WS-C2960X-48TS-LL,iosxe,cat2k,c2900, -WS-C2960XR-24PD-I,iosxe,cat2k,c2900, -WS-C2960XR-24PS-I,iosxe,cat2k,c2900, -WS-C2960XR-24TD-I,iosxe,cat2k,c2900, -WS-C2960XR-24TS-I,iosxe,cat2k,c2900, -WS-C2960XR-48FPD-I,iosxe,cat2k,c2900, -WS-C2960XR-48FPS-I,iosxe,cat2k,c2900, -WS-C2960XR-48LPD-I,iosxe,cat2k,c2900, -WS-C2960XR-48LPS-I,iosxe,cat2k,c2900, -WS-C2960XR-48TD-I,iosxe,cat2k,c2900, -WS-C2960XR-48TS-I,iosxe,cat2k,c2900, -WS-C2970G-24T-E,iosxe,cat2k,c2900, -WS-C2970G-24TS-E,iosxe,cat2k,c2900, -WS-C2975GS-48PS-L,iosxe,cat2k,c2900, -WS-C2980G,iosxe,cat2k,c2900, -WS-C2980G-A,iosxe,cat2k,c2900, -WS-C3016,iosxe,cat3k,c3000, -WS-C3016A,iosxe,cat3k,c3000, -WS-C3016B,iosxe,cat3k,c3000, -WS-C3100A,iosxe,cat3k,c3100, -WS-C3100B,iosxe,cat3k,c3100, -WS-C3200A,iosxe,cat3k,c3200, -WS-C3200B,iosxe,cat3k,c3200, -WS-C3508G-XL-A,iosxe,cat3k,c3500, -WS-C3508G-XL-EN,iosxe,cat3k,c3500, -WS-C3512-XL-A,iosxe,cat3k,c3500, -WS-C3512-XL-EN,iosxe,cat3k,c3500, -WS-C3524-PWR-XL-EN,iosxe,cat3k,c3500, -WS-C3524-XL-A,iosxe,cat3k,c3500, -WS-C3524-XL-EN,iosxe,cat3k,c3500, -WS-C3548-XL-A,iosxe,cat3k,c3500, -WS-C3548-XL-EN,iosxe,cat3k,c3500, -WS-C3550-12G,iosxe,cat3k,c3500, -WS-C3550-12T,iosxe,cat3k,c3500, -WS-C3550-24-DC-SMI,iosxe,cat3k,c3500, -WS-C3550-24-EMI,iosxe,cat3k,c3500, -WS-C3550-24-FX-SMI,iosxe,cat3k,c3500, -WS-C3550-24-SMI,iosxe,cat3k,c3500, -WS-C3550-24PWR-EMI,iosxe,cat3k,c3500, -WS-C3550-24PWR-SMI,iosxe,cat3k,c3500, -WS-C3550-48-EMI,iosxe,cat3k,c3500, -WS-C3550-48-SMI,iosxe,cat3k,c3500, -WS-C3560-12PC-S,iosxe,cat3k,c3500, -WS-C3560-24PS-E,iosxe,cat3k,c3500, -WS-C3560-24PS-S,iosxe,cat3k,c3500, -WS-C3560-24TS-E,iosxe,cat3k,c3500, -WS-C3560-24TS-S,iosxe,cat3k,c3500, -WS-C3560-48PS-E,iosxe,cat3k,c3500, -WS-C3560-48PS-S,iosxe,cat3k,c3500, -WS-C3560-48TS-E,iosxe,cat3k,c3500, -WS-C3560-48TS-S,iosxe,cat3k,c3500, -WS-C3560-8PC-S,iosxe,cat3k,c3500, -WS-C3560C-12PC-S,iosxe,cat3k,c3500, -WS-C3560C-8PC-S,iosxe,cat3k,c3500, -WS-C3560CG-8PC-S,iosxe,cat3k,c3500, -WS-C3560CG-8TC-S,iosxe,cat3k,c3500, -WS-C3560CPD-8PT-S,iosxe,cat3k,c3500, -WS-C3560CX-12PC-S,iosxe,cat3k,c3500, -WS-C3560CX-12PD-S,iosxe,cat3k,c3500, -WS-C3560CX-12TC-S,iosxe,cat3k,c3500, -WS-C3560CX-8PC-S,iosxe,cat3k,c3500, -WS-C3560CX-8PT-S,iosxe,cat3k,c3500, -WS-C3560CX-8TC-S,iosxe,cat3k,c3500, -WS-C3560CX-8XPD-S,iosxe,cat3k,c3500, -WS-C3560E-12D-E,iosxe,cat3k,c3500, -WS-C3560E-12D-S,iosxe,cat3k,c3500, -WS-C3560E-12SD-E,iosxe,cat3k,c3500, -WS-C3560E-12SD-S,iosxe,cat3k,c3500, -WS-C3560E-24PD-E,iosxe,cat3k,c3500, -WS-C3560E-24PD-S,iosxe,cat3k,c3500, -WS-C3560E-24TD-E,iosxe,cat3k,c3500, -WS-C3560E-24TD-S,iosxe,cat3k,c3500, -WS-C3560E-24TD-SD,iosxe,cat3k,c3500, -WS-C3560E-48PD-E,iosxe,cat3k,c3500, -WS-C3560E-48PD-EF,iosxe,cat3k,c3500, -WS-C3560E-48PD-S,iosxe,cat3k,c3500, -WS-C3560E-48PD-SF,iosxe,cat3k,c3500, -WS-C3560E-48TD-E,iosxe,cat3k,c3500, -WS-C3560E-48TD-S,iosxe,cat3k,c3500, -WS-C3560E-48TD-SD,iosxe,cat3k,c3500, -WS-C3560G-24PS-E,iosxe,cat3k,c3500, -WS-C3560G-24PS-S,iosxe,cat3k,c3500, -WS-C3560G-24TS-E,iosxe,cat3k,c3500, -WS-C3560G-24TS-S,iosxe,cat3k,c3500, -WS-C3560G-48PS-E,iosxe,cat3k,c3500, -WS-C3560G-48PS-S,iosxe,cat3k,c3500, -WS-C3560G-48TS-E,iosxe,cat3k,c3500, -WS-C3560G-48TS-S,iosxe,cat3k,c3500, -WS-C3560V2-24PS-E,iosxe,cat3k,c3500, -WS-C3560V2-24PS-S,iosxe,cat3k,c3500, -WS-C3560V2-24TS-E,iosxe,cat3k,c3500, -WS-C3560V2-24TS-S,iosxe,cat3k,c3500, -WS-C3560V2-24TS-SD,iosxe,cat3k,c3500, -WS-C3560V2-48PS-E,iosxe,cat3k,c3500, -WS-C3560V2-48PS-S,iosxe,cat3k,c3500, -WS-C3560V2-48TS-E,iosxe,cat3k,c3500, -WS-C3560V2-48TS-S,iosxe,cat3k,c3500, -WS-C3560X-24P-E,iosxe,cat3k,c3500, -WS-C3560X-24P-L,iosxe,cat3k,c3500, -WS-C3560X-24P-S,iosxe,cat3k,c3500, -WS-C3560X-24T-E,iosxe,cat3k,c3500, -WS-C3560X-24T-L,iosxe,cat3k,c3500, -WS-C3560X-24T-S,iosxe,cat3k,c3500, -WS-C3560X-24U-E,iosxe,cat3k,c3500, -WS-C3560X-24U-L,iosxe,cat3k,c3500, -WS-C3560X-24U-S,iosxe,cat3k,c3500, -WS-C3560X-48P-E,iosxe,cat3k,c3500, -WS-C3560X-48P-L,iosxe,cat3k,c3500, -WS-C3560X-48P-S,iosxe,cat3k,c3500, -WS-C3560X-48PF-E,iosxe,cat3k,c3500, -WS-C3560X-48PF-L,iosxe,cat3k,c3500, -WS-C3560X-48PF-S,iosxe,cat3k,c3500, -WS-C3560X-48T-E,iosxe,cat3k,c3500, -WS-C3560X-48T-L,iosxe,cat3k,c3500, -WS-C3560X-48T-S,iosxe,cat3k,c3500, -WS-C3560X-48U-E,iosxe,cat3k,c3500, -WS-C3560X-48U-L,iosxe,cat3k,c3500, -WS-C3560X-48U-S,iosxe,cat3k,c3500, -WS-C3650-12X48FD-E,iosxe,cat3k,c3600, -WS-C3650-12X48FD-L,iosxe,cat3k,c3600, -WS-C3650-12X48FD-S,iosxe,cat3k,c3600, -WS-C3650-12X48UQ-E,iosxe,cat3k,c3600, -WS-C3650-12X48UQ-L,iosxe,cat3k,c3600, -WS-C3650-12X48UQ-S,iosxe,cat3k,c3600, -WS-C3650-12X48UR-E,iosxe,cat3k,c3600, -WS-C3650-12X48UR-L,iosxe,cat3k,c3600, -WS-C3650-12X48UR-S,iosxe,cat3k,c3600, -WS-C3650-12X48UZ-E,iosxe,cat3k,c3600, -WS-C3650-12X48UZ-L,iosxe,cat3k,c3600, -WS-C3650-12X48UZ-S,iosxe,cat3k,c3600, -WS-C3650-24PD,iosxe,cat3k,c3600, -WS-C3650-24PD-E,iosxe,cat3k,c3600, -WS-C3650-24PD-L,iosxe,cat3k,c3600, -WS-C3650-24PD-S,iosxe,cat3k,c3600, -WS-C3650-24PDM-E,iosxe,cat3k,c3600, -WS-C3650-24PDM-L,iosxe,cat3k,c3600, -WS-C3650-24PDM-S,iosxe,cat3k,c3600, -WS-C3650-24PS,iosxe,cat3k,c3600, -WS-C3650-24PS-E,iosxe,cat3k,c3600, -WS-C3650-24PS-L,iosxe,cat3k,c3600, -WS-C3650-24PS-S,iosxe,cat3k,c3600, -WS-C3650-24PWD-S,iosxe,cat3k,c3600, -WS-C3650-24PWS-S,iosxe,cat3k,c3600, -WS-C3650-24TD,iosxe,cat3k,c3600, -WS-C3650-24TD-E,iosxe,cat3k,c3600, -WS-C3650-24TD-L,iosxe,cat3k,c3600, -WS-C3650-24TD-S,iosxe,cat3k,c3600, -WS-C3650-24TS,iosxe,cat3k,c3600, -WS-C3650-24TS-E,iosxe,cat3k,c3600, -WS-C3650-24TS-L,iosxe,cat3k,c3600, -WS-C3650-24TS-S,iosxe,cat3k,c3600, -WS-C3650-48FD-E,iosxe,cat3k,c3600, -WS-C3650-48FD-L,iosxe,cat3k,c3600, -WS-C3650-48FD-S,iosxe,cat3k,c3600, -WS-C3650-48FQ-E,iosxe,cat3k,c3600, -WS-C3650-48FQ-L,iosxe,cat3k,c3600, -WS-C3650-48FQ-S,iosxe,cat3k,c3600, -WS-C3650-48FQM-E,iosxe,cat3k,c3600, -WS-C3650-48FQM-L,iosxe,cat3k,c3600, -WS-C3650-48FQM-S,iosxe,cat3k,c3600, -WS-C3650-48FS-E,iosxe,cat3k,c3600, -WS-C3650-48FS-L,iosxe,cat3k,c3600, -WS-C3650-48FS-S,iosxe,cat3k,c3600, -WS-C3650-48FWD-S,iosxe,cat3k,c3600, -WS-C3650-48FWS-S,iosxe,cat3k,c3600, -WS-C3650-48PD,iosxe,cat3k,c3600, -WS-C3650-48PD-E,iosxe,cat3k,c3600, -WS-C3650-48PD-L,iosxe,cat3k,c3600, -WS-C3650-48PD-S,iosxe,cat3k,c3600, -WS-C3650-48PQ,iosxe,cat3k,c3600, -WS-C3650-48PQ-E,iosxe,cat3k,c3600, -WS-C3650-48PQ-L,iosxe,cat3k,c3600, -WS-C3650-48PQ-S,iosxe,cat3k,c3600, -WS-C3650-48PS,iosxe,cat3k,c3600, -WS-C3650-48PS-E,iosxe,cat3k,c3600, -WS-C3650-48PS-L,iosxe,cat3k,c3600, -WS-C3650-48PS-S,iosxe,cat3k,c3600, -WS-C3650-48PWD-S,iosxe,cat3k,c3600, -WS-C3650-48PWS-S,iosxe,cat3k,c3600, -WS-C3650-48TD,iosxe,cat3k,c3600, -WS-C3650-48TD-E,iosxe,cat3k,c3600, -WS-C3650-48TD-L,iosxe,cat3k,c3600, -WS-C3650-48TD-S,iosxe,cat3k,c3600, -WS-C3650-48TQ,iosxe,cat3k,c3600, -WS-C3650-48TQ-E,iosxe,cat3k,c3600, -WS-C3650-48TQ-L,iosxe,cat3k,c3600, -WS-C3650-48TQ-S,iosxe,cat3k,c3600, -WS-C3650-48TS,iosxe,cat3k,c3600, -WS-C3650-48TS-E,iosxe,cat3k,c3600, -WS-C3650-48TS-L,iosxe,cat3k,c3600, -WS-C3650-48TS-S,iosxe,cat3k,c3600, -WS-C3650-8X24PD-E,iosxe,cat3k,c3600, -WS-C3650-8X24PD-L,iosxe,cat3k,c3600, -WS-C3650-8X24PD-S,iosxe,cat3k,c3600, -WS-C3650-8X24UQ-E,iosxe,cat3k,c3600, -WS-C3650-8X24UQ-L,iosxe,cat3k,c3600, -WS-C3650-8X24UQ-S,iosxe,cat3k,c3600, -WS-C3750-24FS-S,iosxe,cat3k,c3700, -WS-C3750-24PS-E,iosxe,cat3k,c3700, -WS-C3750-24PS-S,iosxe,cat3k,c3700, -WS-C3750-24TS-E,iosxe,cat3k,c3700, -WS-C3750-24TS-S,iosxe,cat3k,c3700, -WS-C3750-48PS-E,iosxe,cat3k,c3700, -WS-C3750-48PS-S,iosxe,cat3k,c3700, -WS-C3750-48TS-E,iosxe,cat3k,c3700, -WS-C3750-48TS-S,iosxe,cat3k,c3700, -WS-C3750E-24PD-E,iosxe,cat3k,c3700, -WS-C3750E-24PD-S,iosxe,cat3k,c3700, -WS-C3750E-24TD-E,iosxe,cat3k,c3700, -WS-C3750E-24TD-S,iosxe,cat3k,c3700, -WS-C3750E-24TD-SD,iosxe,cat3k,c3700, -WS-C3750E-48PD-E,iosxe,cat3k,c3700, -WS-C3750E-48PD-EF,iosxe,cat3k,c3700, -WS-C3750E-48PD-S,iosxe,cat3k,c3700, -WS-C3750E-48PD-SF,iosxe,cat3k,c3700, -WS-C3750E-48TD-E,iosxe,cat3k,c3700, -WS-C3750E-48TD-S,iosxe,cat3k,c3700, -WS-C3750E-48TD-SD,iosxe,cat3k,c3700, -WS-C3750G-12S-E,iosxe,cat3k,c3700, -WS-C3750G-12S-S,iosxe,cat3k,c3700, -WS-C3750G-12S-SD,iosxe,cat3k,c3700, -WS-C3750G-16TD-E,iosxe,cat3k,c3700, -WS-C3750G-16TD-S,iosxe,cat3k,c3700, -WS-C3750G-24PS-E,iosxe,cat3k,c3700, -WS-C3750G-24PS-S,iosxe,cat3k,c3700, -WS-C3750G-24T-E,iosxe,cat3k,c3700, -WS-C3750G-24T-S,iosxe,cat3k,c3700, -WS-C3750G-24TS-E,iosxe,cat3k,c3700, -WS-C3750G-24TS-E1U,iosxe,cat3k,c3700, -WS-C3750G-24TS-S,iosxe,cat3k,c3700, -WS-C3750G-24TS-S1U,iosxe,cat3k,c3700, -WS-C3750G-24WS-S25,iosxe,cat3k,c3700, -WS-C3750G-24WS-S50,iosxe,cat3k,c3700, -WS-C3750G-48PS-E,iosxe,cat3k,c3700, -WS-C3750G-48PS-S,iosxe,cat3k,c3700, -WS-C3750G-48TS-E,iosxe,cat3k,c3700, -WS-C3750G-48TS-S,iosxe,cat3k,c3700, -WS-C3750V2-24FS-S,iosxe,cat3k,c3700, -WS-C3750V2-24PS-E,iosxe,cat3k,c3700, -WS-C3750V2-24PS-S,iosxe,cat3k,c3700, -WS-C3750V2-24TS-E,iosxe,cat3k,c3700, -WS-C3750V2-24TS-S,iosxe,cat3k,c3700, -WS-C3750V2-48PS-E,iosxe,cat3k,c3700, -WS-C3750V2-48PS-S,iosxe,cat3k,c3700, -WS-C3750V2-48TS-E,iosxe,cat3k,c3700, -WS-C3750V2-48TS-S,iosxe,cat3k,c3700, -WS-C3750X-12S-E,iosxe,cat3k,c3700, -WS-C3750X-12S-S,iosxe,cat3k,c3700, -WS-C3750X-24P-E,iosxe,cat3k,c3700, -WS-C3750X-24P-L,iosxe,cat3k,c3700, -WS-C3750X-24P-S,iosxe,cat3k,c3700, -WS-C3750X-24S-E,iosxe,cat3k,c3700, -WS-C3750X-24S-S,iosxe,cat3k,c3700, -WS-C3750X-24T-E,iosxe,cat3k,c3700, -WS-C3750X-24T-L,iosxe,cat3k,c3700, -WS-C3750X-24T-S,iosxe,cat3k,c3700, -WS-C3750X-24U-E,iosxe,cat3k,c3700, -WS-C3750X-24U-L,iosxe,cat3k,c3700, -WS-C3750X-24U-S,iosxe,cat3k,c3700, -WS-C3750X-48P-E,iosxe,cat3k,c3700, -WS-C3750X-48P-L,iosxe,cat3k,c3700, -WS-C3750X-48P-S,iosxe,cat3k,c3700, -WS-C3750X-48PF-E,iosxe,cat3k,c3700, -WS-C3750X-48PF-L,iosxe,cat3k,c3700, -WS-C3750X-48PF-S,iosxe,cat3k,c3700, -WS-C3750X-48T-E,iosxe,cat3k,c3700, -WS-C3750X-48T-L,iosxe,cat3k,c3700, -WS-C3750X-48T-S,iosxe,cat3k,c3700, -WS-C3750X-48U-E,iosxe,cat3k,c3700, -WS-C3750X-48U-L,iosxe,cat3k,c3700, -WS-C3750X-48U-S,iosxe,cat3k,c3700, -WS-C3850-12S,iosxe,cat3k,c3800, -WS-C3850-12S-E,iosxe,cat3k,c3800, -WS-C3850-12S-S,iosxe,cat3k,c3800, -WS-C3850-12X48U-E,iosxe,cat3k,c3800, -WS-C3850-12X48U-L,iosxe,cat3k,c3800, -WS-C3850-12X48U-S,iosxe,cat3k,c3800, -WS-C3850-12X48UW-S,iosxe,cat3k,c3800, -WS-C3850-12XS-E,iosxe,cat3k,c3800, -WS-C3850-12XS-S,iosxe,cat3k,c3800, -WS-C3850-16XS-E,iosxe,cat3k,c3800, -WS-C3850-16XS-S,iosxe,cat3k,c3800, -WS-C3850-24P,iosxe,cat3k,c3800, -WS-C3850-24P-E,iosxe,cat3k,c3800, -WS-C3850-24P-L,iosxe,cat3k,c3800, -WS-C3850-24P-S,iosxe,cat3k,c3800, -WS-C3850-24PW-S,iosxe,cat3k,c3800, -WS-C3850-24S,iosxe,cat3k,c3800, -WS-C3850-24S-E,iosxe,cat3k,c3800, -WS-C3850-24S-S,iosxe,cat3k,c3800, -WS-C3850-24T,iosxe,cat3k,c3800, -WS-C3850-24T-E,iosxe,cat3k,c3800, -WS-C3850-24T-L,iosxe,cat3k,c3800, -WS-C3850-24T-S,iosxe,cat3k,c3800, -WS-C3850-24U,iosxe,cat3k,c3800, -WS-C3850-24U-E,iosxe,cat3k,c3800, -WS-C3850-24U-L,iosxe,cat3k,c3800, -WS-C3850-24U-S,iosxe,cat3k,c3800, -WS-C3850-24UW-S,iosxe,cat3k,c3800, -WS-C3850-24XS,iosxe,cat3k,c3800, -WS-C3850-24XS-E,iosxe,cat3k,c3800, -WS-C3850-24XS-S,iosxe,cat3k,c3800, -WS-C3850-24XU-E,iosxe,cat3k,c3800, -WS-C3850-24XU-L,iosxe,cat3k,c3800, -WS-C3850-24XU-S,iosxe,cat3k,c3800, -WS-C3850-24XUW-S,iosxe,cat3k,c3800, -WS-C3850-32XS-E,iosxe,cat3k,c3800, -WS-C3850-32XS-S,iosxe,cat3k,c3800, -WS-C3850-48F-E,iosxe,cat3k,c3800, -WS-C3850-48F-L,iosxe,cat3k,c3800, -WS-C3850-48F-S,iosxe,cat3k,c3800, -WS-C3850-48P,iosxe,cat3k,c3800, -WS-C3850-48P-E,iosxe,cat3k,c3800, -WS-C3850-48P-L,iosxe,cat3k,c3800, -WS-C3850-48P-S,iosxe,cat3k,c3800, -WS-C3850-48PW-S,iosxe,cat3k,c3800, -WS-C3850-48T,iosxe,cat3k,c3800, -WS-C3850-48T-E,iosxe,cat3k,c3800, -WS-C3850-48T-L,iosxe,cat3k,c3800, -WS-C3850-48T-S,iosxe,cat3k,c3800, -WS-C3850-48U,iosxe,cat3k,c3800, -WS-C3850-48U-E,iosxe,cat3k,c3800, -WS-C3850-48U-L,iosxe,cat3k,c3800, -WS-C3850-48U-S,iosxe,cat3k,c3800, -WS-C3850-48UW-S,iosxe,cat3k,c3800, -WS-C3850-48XS-E,iosxe,cat3k,c3800, -WS-C3850-48XS-F-E,iosxe,cat3k,c3800, -WS-C3850-48XS-F-S,iosxe,cat3k,c3800, -WS-C3850-48XS-S,iosxe,cat3k,c3800, -WS-C3850R-24T-E,iosxe,cat3k,c3800, -WS-C3850R-24T-L,iosxe,cat3k,c3800, -WS-C3850R-24T-S,iosxe,cat3k,c3800, -WS-C3850R-48P-E,iosxe,cat3k,c3800, -WS-C3850R-48P-L,iosxe,cat3k,c3800, -WS-C3850R-48P-S,iosxe,cat3k,c3800, -WS-C3850R-48T-E,iosxe,cat3k,c3800, -WS-C3850R-48T-L,iosxe,cat3k,c3800, -WS-C3850R-48T-S,iosxe,cat3k,c3800, -WS-C3850R-48U-E,iosxe,cat3k,c3800, -WS-C3850R-48U-L,iosxe,cat3k,c3800, -WS-C3850R-48U-S,iosxe,cat3k,c3800, -WS-C3900,iosxe,cat3k,c3900, -WS-C3920,iosxe,cat3k,c3900, -WS-C4003,iosxe,cat4k,c3900, -WS-C4006,iosxe,cat4k,c4000, -WS-C4224V-8FXS,iosxe,cat4k,c4200, -WS-C4500X-16,iosxe,cat4k,c4500, -WS-C4500X-32,iosxe,cat4k,c4500, -WS-C4503,iosxe,cat4k,c4500, -WS-C4503-E,iosxe,cat4k,c4500, -WS-C4506,iosxe,cat4k,c4500, -WS-C4506-E,iosxe,cat4k,c4500, -WS-C4507R,iosxe,cat4k,c4500, -WS-C4507R+E,iosxe,cat4k,c4500, -WS-C4507R-E,iosxe,cat4k,c4500, -WS-C4510R,iosxe,cat4k,c4500, -WS-C4510R+E,iosxe,cat4k,c4500, -WS-C4510R-E,iosxe,cat4k,c4500, -WS-C4840G,iosxe,cat4k,c4800, -WS-C4900M,iosxe,cat4k,c4900, -WS-C4908G-L3,iosxe,cat4k,c4900, -WS-C4912G,iosxe,cat4k,c4900, -WS-C4928-10GE,iosxe,cat4k,c4900, -WS-C4948,iosxe,cat4k,c4900, -WS-C4948-10GE,iosxe,cat4k,c4900, -WS-C4948E,iosxe,cat4k,c4900, -WS-C4948E-F,iosxe,cat4k,c4900, -WS-C5000,iosxe,cat5k,c5000, -WS-C5002,iosxe,cat5k,c5000, -WS-C5500,iosxe,cat5k,c5500, -WS-C5505,iosxe,cat5k,c5500, -WS-C5509,iosxe,cat5k,c5500, -WS-C6006,iosxe,cat6k,c6000, -WS-C6009,iosxe,cat6k,c6000, -WS-C6503,iosxe,cat6k,c6500, -WS-C6503-E,iosxe,cat6k,c6500, -WS-C6504-E,iosxe,cat6k,c6500, -WS-C6506,iosxe,cat6k,c6500, -WS-C6506-E,iosxe,cat6k,c6500, -WS-C6509,iosxe,cat6k,c6500, -WS-C6509-E,iosxe,cat6k,c6500, -WS-C6509-NEB,iosxe,cat6k,c6500, -WS-C6509-NEB-A,iosxe,cat6k,c6500, -WS-C6509-V-E,iosxe,cat6k,c6500, -WS-C6513,iosxe,cat6k,c6500, -WS-C6513-E,iosxe,cat6k,c6500, -WS-X3011-CH,iosxe,cat3k,c3000, +pid,os,platform,model,submodel +2501FRAD-FX,ios,c2k,c2500, +2501LANFRAD-FX,ios,c2k,c2500, +8101-32FH,iosxr,spitfire,8100, +8101-32H,iosxr,spitfire,8100, +8102-64H,iosxr,spitfire,8100, +8201,iosxr,spitfire,8200, +8201-24H8FH,iosxr,spitfire,8200, +8201-32FH,iosxr,spitfire,8200, +8201-32FH-O,sonic,spitfire,8200, +8202,iosxr,spitfire,8200, +8202-32FH-M,iosxr,spitfire,8200, +8404,iosxr,spitfire,8400, +8608,iosxr,spitfire,8600, +8804,iosxr,spitfire,8800, +8808,iosxr,spitfire,8800, +8812,iosxr,spitfire,8800, +8818,iosxr,spitfire,8800, +AIR-AP1832I-B-K9,cheetah,ap,air1800, +AIR-AP1832I-C-K9,cheetah,ap,air1800, +AIR-AP1832I-D-K9,cheetah,ap,air1800, +AIR-AP1832I-E-K9,cheetah,ap,air1800, +AIR-AP1832I-F-K9,cheetah,ap,air1800, +AIR-AP1852E-B-K9,cheetah,ap,air1800, +AIR-AP1852E-C-K9,cheetah,ap,air1800, +AIR-AP1852E-D-K9,cheetah,ap,air1800, +AIR-AP1852E-F-K9,cheetah,ap,air1800, +AIR-AP1852E-K-K9,cheetah,ap,air1800, +AIR-AP1852I-B-K9,cheetah,ap,air1800, +AIR-AP1852I-C-K9,cheetah,ap,air1800, +AIR-AP1852I-D-K9,cheetah,ap,air1800, +AIR-AP2802E-A-K9,cheetah,ap,air2800, +AIR-AP2802E-B-K9,cheetah,ap,air2800, +AIR-AP2802E-D-K9,cheetah,ap,air2800, +AIR-AP2802E-F-K9,cheetah,ap,air2800, +AIR-AP2802E-K-K9,cheetah,ap,air2800, +AIR-AP2802I-A-K9,cheetah,ap,air2800, +AIR-AP2802I-B-K9,cheetah,ap,air2800, +AIR-AP2802I-C-K9,cheetah,ap,air2800, +AIR-AP2802I-D-K9,cheetah,ap,air2800, +AIR-AP2802I-E-K9,cheetah,ap,air2800, +AIR-AP2802I-F-K9,cheetah,ap,air2800, +AIR-AP2802I-K-K9,cheetah,ap,air2800, +AIR-AP3802E-A-K9,cheetah,ap,air3800, +AIR-AP3802E-B-K9,cheetah,ap,air3800, +AIR-AP3802E-D-K9,cheetah,ap,air3800, +AIR-AP3802E-F-K9,cheetah,ap,air3800, +AIR-AP3802E-K-K9,cheetah,ap,air3800, +AIR-AP3802I-A-K9,cheetah,ap,air3800, +AIR-AP3802I-B-K9,cheetah,ap,air3800, +AIR-AP3802I-C-K9,cheetah,ap,air3800, +AIR-AP3802I-D-K9,cheetah,ap,air3800, +AIR-AP3802I-E-K9,cheetah,ap,air3800, +AIR-AP3802I-F-K9,cheetah,ap,air3800, +AIR-AP3802I-K-K9,cheetah,ap,air3800, +AIR-AP4800-B-K9,cheetah,ap,air4800, +AIR-AP4800-D-K9,cheetah,ap,air4800, +AIR-AP4800-E-K9,cheetah,ap,air4800, +AIR-AP4800-F-K9,cheetah,ap,air4800, +AIR-AP4800-K-K9,cheetah,ap,air4800, +AS2511-RJ,ios,c2500,c2511, +ASR-9000V,iosxr,asr9k,asr9000, +ASR-9001,iosxr,asr9k,asr9000, +ASR-9001-S,iosxr,asr9k,asr9000, +ASR-9006,iosxr,asr9k,asr9000, +ASR-9006-SYS,iosxr,asr9k,asr9000, +ASR-9010,iosxr,asr9k,asr9000, +ASR-9010-SYS,iosxr,asr9k,asr9000, +ASR-902U,iosxr,asr9k,asr900, +ASR-920U-12SZ-IM,iosxr,asr9k,asr920, +ASR-9901,iosxr,asr9k,asr9900, +ASR-9901-120G,iosxr,asr9k,asr9900, +ASR-9901-256G,iosxr,asr9k,asr9900, +ASR-9902,iosxr,asr9k,asr9900, +ASR-9903,iosxr,asr9k,asr9900, +ASR-9903-FC,iosxr,asr9k,asr9900, +ASR-9904,iosxr,asr9k,asr9900, +ASR-9906,iosxr,asr9k,asr9900, +ASR-9910,iosxr,asr9k,asr9900, +ASR-9912,iosxr,asr9k,asr9900, +ASR-9922,iosxr,asr9k,asr9900, +ASR1001,iosxe,asr1k,asr1001, +ASR1001-2XOC3POS,iosxe,asr1k,asr1001, +ASR1001-4X1GE,iosxe,asr1k,asr1001, +ASR1001-4XT3,iosxe,asr1k,asr1001, +ASR1001-8XCHT1E1,iosxe,asr1k,asr1001, +ASR1001-HDD,iosxe,asr1k,asr1001, +ASR1002,iosxe,asr1k,asr1002, +ASR1002-F,iosxe,asr1k,asr1002, +ASR1004,iosxe,asr1k,asr1004, +ASR1006,iosxe,asr1k,asr1006, +ASR1006-X,iosxe,asr1k,asr1006, +ASR1009-X,iosxe,asr1k,asr1009, +ASR1013,iosxe,asr1k,asr1013, +C1000-16FP-2G-L,iosxe,cat1k,c1000, +C1000-16P-2G-L,iosxe,cat1k,c1000, +C1000-16P-E-2G-L,iosxe,cat1k,c1000, +C1000-16T-2G-L,iosxe,cat1k,c1000, +C1000-16T-E-2G-L,iosxe,cat1k,c1000, +C1000-24FP-4G-L,iosxe,cat1k,c1000, +C1000-24FP-4X-L,iosxe,cat1k,c1000, +C1000-24P-4G-L,iosxe,cat1k,c1000, +C1000-24P-4X-L,iosxe,cat1k,c1000, +C1000-24PP-4G-L,iosxe,cat1k,c1000, +C1000-24T-4G-L,iosxe,cat1k,c1000, +C1000-24T-4X-L,iosxe,cat1k,c1000, +C1000-48FP-4G-L,iosxe,cat1k,c1000, +C1000-48FP-4X-L,iosxe,cat1k,c1000, +C1000-48P-4G-L,iosxe,cat1k,c1000, +C1000-48P-4X-L,iosxe,cat1k,c1000, +C1000-48PP-4G-L,iosxe,cat1k,c1000, +C1000-48T-4G-L,iosxe,cat1k,c1000, +C1000-48T-4X-L,iosxe,cat1k,c1000, +C1000-8FP-2G-L,iosxe,cat1k,c1000, +C1000-8FP-E-2G-L,iosxe,cat1k,c1000, +C1000-8P-2G-L,iosxe,cat1k,c1000, +C1000-8P-E-2G-L,iosxe,cat1k,c1000, +C1000-8T-2G-L,iosxe,cat1k,c1000, +C1000-8T-E-2G-L,iosxe,cat1k,c1000, +C1000FE-24P-4G-L,iosxe,cat1k,c1000, +C1000FE-24T-4G-L,iosxe,cat1k,c1000, +C1000FE-48P-4G-L,iosxe,cat1k,c1000, +C1000FE-48T-4G-L,iosxe,cat1k,c1000, +C1100TG-1N32A,iosxe,isr,c1100, +C1101-4P,iosxe,c1k,c1100, +C1101-4PLTEP,iosxe,c1k,c1100, +C1101-4PLTEPWA,iosxe,c1k,c1100, +C1101-4PLTEPWB,iosxe,c1k,c1100, +C1101-4PLTEPWD,iosxe,c1k,c1100, +C1101-4PLTEPWE,iosxe,c1k,c1100, +C1101-4PLTEPWF,iosxe,c1k,c1100, +C1101-4PLTEPWH,iosxe,c1k,c1100, +C1101-4PLTEPWN,iosxe,c1k,c1100, +C1101-4PLTEPWQ,iosxe,c1k,c1100, +C1101-4PLTEPWR,iosxe,c1k,c1100, +C1101-4PLTEPWZ,iosxe,c1k,c1100, +C1109-2PLTEAU,iosxe,c1k,c1100, +C1109-2PLTEGB,iosxe,c1k,c1100, +C1109-2PLTEIN,iosxe,c1k,c1100, +C1109-2PLTEJN,iosxe,c1k,c1100, +C1109-2PLTEUS,iosxe,c1k,c1100, +C1109-2PLTEVZ,iosxe,c1k,c1100, +C1109-4PLTE2P,iosxe,c1k,c1100, +C1109-4PLTE2PWA,iosxe,c1k,c1100, +C1109-4PLTE2PWB,iosxe,c1k,c1100, +C1109-4PLTE2PWD,iosxe,c1k,c1100, +C1109-4PLTE2PWE,iosxe,c1k,c1100, +C1109-4PLTE2PWF,iosxe,c1k,c1100, +C1109-4PLTE2PWH,iosxe,c1k,c1100, +C1109-4PLTE2PWN,iosxe,c1k,c1100, +C1109-4PLTE2PWQ,iosxe,c1k,c1100, +C1109-4PLTE2PWR,iosxe,c1k,c1100, +C1109-4PLTE2PWZ,iosxe,c1k,c1100, +C1111-4P,iosxe,c1k,c1100, +C1111-4PLTEEA,iosxe,c1k,c1100, +C1111-4PLTELA,iosxe,c1k,c1100, +C1111-4PWA,iosxe,c1k,c1100, +C1111-4PWB,iosxe,c1k,c1100, +C1111-4PWD,iosxe,c1k,c1100, +C1111-4PWE,iosxe,c1k,c1100, +C1111-4PWF,iosxe,c1k,c1100, +C1111-4PWH,iosxe,c1k,c1100, +C1111-4PWN,iosxe,c1k,c1100, +C1111-4PWQ,iosxe,c1k,c1100, +C1111-4PWR,iosxe,c1k,c1100, +C1111-4PWZ,iosxe,c1k,c1100, +C1111-8P,iosxe,c1k,c1100, +C1111-8PLTEEA,iosxe,c1k,c1100, +C1111-8PLTEEAWA,iosxe,c1k,c1100, +C1111-8PLTEEAWB,iosxe,c1k,c1100, +C1111-8PLTEEAWE,iosxe,c1k,c1100, +C1111-8PLTEEAWR,iosxe,c1k,c1100, +C1111-8PLTELA,iosxe,c1k,c1100, +C1111-8PLTELAWD,iosxe,c1k,c1100, +C1111-8PLTELAWF,iosxe,c1k,c1100, +C1111-8PLTELAWH,iosxe,c1k,c1100, +C1111-8PLTELAWN,iosxe,c1k,c1100, +C1111-8PLTELAWQ,iosxe,c1k,c1100, +C1111-8PLTELAWS,iosxe,c1k,c1100, +C1111-8PLTELAWZ,iosxe,c1k,c1100, +C1111-8PWA,iosxe,c1k,c1100, +C1111-8PWB,iosxe,c1k,c1100, +C1111-8PWE,iosxe,c1k,c1100, +C1111-8PWF,iosxe,c1k,c1100, +C1111-8PWH,iosxe,c1k,c1100, +C1111-8PWN,iosxe,c1k,c1100, +C1111-8PWQ,iosxe,c1k,c1100, +C1111-8PWR,iosxe,c1k,c1100, +C1111-8PWS,iosxe,c1k,c1100, +C1111-8PWZ,iosxe,c1k,c1100, +C1111X-8P,iosxe,c1k,c1100, +C1112-8P,iosxe,c1k,c1100, +C1112-8PLTEEA,iosxe,c1k,c1100, +C1112-8PLTEEAWE,iosxe,c1k,c1100, +C1112-8PWE,iosxe,c1k,c1100, +C1113-8P,iosxe,c1k,c1100, +C1113-8PLTEEA,iosxe,c1k,c1100, +C1113-8PLTEEAWB,iosxe,c1k,c1100, +C1113-8PLTEEAWE,iosxe,c1k,c1100, +C1113-8PLTELA,iosxe,c1k,c1100, +C1113-8PLTELAWA,iosxe,c1k,c1100, +C1113-8PLTELAWZ,iosxe,c1k,c1100, +C1113-8PM,iosxe,c1k,c1100, +C1113-8PMLTEEA,iosxe,c1k,c1100, +C1113-8PMWE,iosxe,c1k,c1100, +C1113-8PWA,iosxe,c1k,c1100, +C1113-8PWB,iosxe,c1k,c1100, +C1113-8PWE,iosxe,c1k,c1100, +C1113-8PWZ,iosxe,c1k,c1100, +C1116-4P,iosxe,c1k,c1100, +C1116-4PLTEEA,iosxe,c1k,c1100, +C1116-4PLTEEAWE,iosxe,c1k,c1100, +C1116-4PWE,iosxe,c1k,c1100, +C1117-4P,iosxe,c1k,c1100, +C1117-4PLTEEA,iosxe,c1k,c1100, +C1117-4PLTEEAWA,iosxe,c1k,c1100, +C1117-4PLTEEAWE,iosxe,c1k,c1100, +C1117-4PLTELA,iosxe,c1k,c1100, +C1117-4PLTELAWZ,iosxe,c1k,c1100, +C1117-4PM,iosxe,c1k,c1100, +C1117-4PMLTEEA,iosxe,c1k,c1100, +C1117-4PMLTEEAWE,iosxe,c1k,c1100, +C1117-4PMWE,iosxe,c1k,c1100, +C1117-4PWA,iosxe,c1k,c1100, +C1117-4PWE,iosxe,c1k,c1100, +C1117-4PWZ,iosxe,c1k,c1100, +C1118-8P,iosxe,c1k,c1100, +C1121-4P,iosxe,c1k,c1100, +C1121-4PLTEP,iosxe,c1k,c1100, +C1121-8P,iosxe,c1k,c1100, +C1121-8PLTEP,iosxe,c1k,c1100, +C1121-8PLTEPWB,iosxe,c1k,c1100, +C1121-8PLTEPWE,iosxe,c1k,c1100, +C1121-8PLTEPWQ,iosxe,c1k,c1100, +C1121-8PLTEPWZ,iosxe,c1k,c1100, +C1121X-8P,iosxe,c1k,c1100, +C1121X-8PLTEP,iosxe,c1k,c1100, +C1121X-8PLTEPWA,iosxe,c1k,c1100, +C1121X-8PLTEPWB,iosxe,c1k,c1100, +C1121X-8PLTEPWE,iosxe,c1k,c1100, +C1121X-8PLTEPWZ,iosxe,c1k,c1100, +C1126-8PLTEP,iosxe,c1k,c1100, +C1126X-8PLTEP,iosxe,c1k,c1100, +C1127-8PLTEP,iosxe,c1k,c1100, +C1127-8PMLTEP,iosxe,c1k,c1100, +C1127X-8PLTEP,iosxe,c1k,c1100, +C1127X-8PMLTEP,iosxe,c1k,c1100, +C1128-8PLTEP,iosxe,c1k,c1100, +C1161-8P,iosxe,c1k,c1100, +C1161-8PLTEP,iosxe,c1k,c1100, +C1161X-8P,iosxe,c1k,c1100, +C1161X-8PLTEP,iosxe,c1k,c1100, +C1861-SRST-B/K9,ios,c1k,c1800, +C1861-SRST-C-B/K9,ios,c1k,c1800, +C1861-SRST-C-F/K9,ios,c1k,c1800, +C1861-SRST-F/K9,ios,c1k,c1800, +C1861-UC-2BRI-K9,ios,c1k,c1800, +C1861-UC-4FXO-K9,ios,c1k,c1800, +C1861W-SRST-B/K9,ios,c1k,c1800, +C1861W-SRST-C-B/K9,ios,c1k,c1800, +C1861W-SRST-C-F/K9,ios,c1k,c1800, +C1861W-SRST-F/K9,ios,c1k,c1800, +C1861W-UC-2BRI-K9,ios,c1k,c1800, +C1861W-UC-4FXO-K9,ios,c1k,c1800, +C3270ENC-FO-K9,ios,c3k,c3200, +C3270ENC-K9,ios,c3k,c3200, +C3825-NOVPN,ios,c3k,c3800, +C3845-NOVPN,ios,c3k,c3800, +C6800IA-48FPD,iosxe,cat6k,c6800, +C6800IA-48FPDR,iosxe,cat6k,c6800, +C6800IA-48TD,iosxe,cat6k,c6800, +C6807-XL,iosxe,cat6k,c6800, +C6816-X-LE,iosxe,cat6k,c6800, +C6824-X-LE-40G,iosxe,cat6k,c6800, +C6832-X-LE,iosxe,cat6k,c6800, +C6840-X-LE-40G,iosxe,cat6k,c6800, +C6880-X,iosxe,cat6k,c6800, +C6880-X-LE,iosxe,cat6k,c6800, +C8000V,iosxe,c8kv,c8000v, +C8200-1N-4T,iosxe,cat8k,c8200, +C8200-UCPE-1N8,iosxe,cat8k,c8200, +C8500-12X,iosxe,cat8k,c8500, +C8500-12X4QC,iosxe,cat8k,c8500, +C8500L-8S4X,iosxe,cat8k,c8500, +C8510-CHAS5,iosxe,cat8k,c8500, +C8510CSR-SKIT-AC,iosxe,cat8k,c8500, +C8540-CHAS13,iosxe,cat8k,c8500, +C8540CSR-SKIT-AC,iosxe,cat8k,c8500, +C9105AXI-A,cheetah,ap,c9100ap, +C9105AXI-B,cheetah,ap,c9100ap, +C9105AXI-C,cheetah,ap,c9100ap, +C9105AXI-D,cheetah,ap,c9100ap, +C9105AXI-E,cheetah,ap,c9100ap, +C9105AXI-F,cheetah,ap,c9100ap, +C9105AXI-G,cheetah,ap,c9100ap, +C9105AXI-H,cheetah,ap,c9100ap, +C9105AXI-I,cheetah,ap,c9100ap, +C9105AXI-K,cheetah,ap,c9100ap, +C9105AXI-N,cheetah,ap,c9100ap, +C9105AXI-Q,cheetah,ap,c9100ap, +C9105AXI-R,cheetah,ap,c9100ap, +C9105AXI-S,cheetah,ap,c9100ap, +C9105AXI-T,cheetah,ap,c9100ap, +C9105AXI-Z,cheetah,ap,c9100ap, +C9105AXW-A,cheetah,ap,c9100ap, +C9105AXW-B,cheetah,ap,c9100ap, +C9105AXW-C,cheetah,ap,c9100ap, +C9105AXW-D,cheetah,ap,c9100ap, +C9105AXW-E,cheetah,ap,c9100ap, +C9105AXW-F,cheetah,ap,c9100ap, +C9105AXW-G,cheetah,ap,c9100ap, +C9105AXW-H,cheetah,ap,c9100ap, +C9105AXW-I,cheetah,ap,c9100ap, +C9105AXW-K,cheetah,ap,c9100ap, +C9105AXW-N,cheetah,ap,c9100ap, +C9105AXW-Q,cheetah,ap,c9100ap, +C9105AXW-R,cheetah,ap,c9100ap, +C9105AXW-S,cheetah,ap,c9100ap, +C9105AXW-T,cheetah,ap,c9100ap, +C9105AXW-Z,cheetah,ap,c9100ap, +C9115AXE-A,cheetah,ap,c9100ap, +C9115AXE-B,cheetah,ap,c9100ap, +C9115AXE-C,cheetah,ap,c9100ap, +C9115AXE-D,cheetah,ap,c9100ap, +C9115AXE-E,cheetah,ap,c9100ap, +C9115AXE-F,cheetah,ap,c9100ap, +C9115AXE-G,cheetah,ap,c9100ap, +C9115AXE-H,cheetah,ap,c9100ap, +C9115AXE-I,cheetah,ap,c9100ap, +C9115AXE-K,cheetah,ap,c9100ap, +C9115AXE-N,cheetah,ap,c9100ap, +C9115AXE-Q,cheetah,ap,c9100ap, +C9115AXE-R,cheetah,ap,c9100ap, +C9115AXE-S,cheetah,ap,c9100ap, +C9115AXE-T,cheetah,ap,c9100ap, +C9115AXE-Z,cheetah,ap,c9100ap, +C9115AXI-A,cheetah,ap,c9100ap, +C9115AXI-B,cheetah,ap,c9100ap, +C9115AXI-C,cheetah,ap,c9100ap, +C9115AXI-D,cheetah,ap,c9100ap, +C9115AXI-E,cheetah,ap,c9100ap, +C9115AXI-F,cheetah,ap,c9100ap, +C9115AXI-G,cheetah,ap,c9100ap, +C9115AXI-H,cheetah,ap,c9100ap, +C9115AXI-I,cheetah,ap,c9100ap, +C9115AXI-K,cheetah,ap,c9100ap, +C9115AXI-N,cheetah,ap,c9100ap, +C9115AXI-Q,cheetah,ap,c9100ap, +C9115AXI-R,cheetah,ap,c9100ap, +C9115AXI-S,cheetah,ap,c9100ap, +C9115AXI-T,cheetah,ap,c9100ap, +C9115AXI-Z,cheetah,ap,c9100ap, +C9117AXI-A,cheetah,ap,c9100ap, +C9117AXI-B,cheetah,ap,c9100ap, +C9117AXI-C,cheetah,ap,c9100ap, +C9117AXI-D,cheetah,ap,c9100ap, +C9117AXI-E,cheetah,ap,c9100ap, +C9117AXI-F,cheetah,ap,c9100ap, +C9117AXI-G,cheetah,ap,c9100ap, +C9117AXI-H,cheetah,ap,c9100ap, +C9117AXI-I,cheetah,ap,c9100ap, +C9117AXI-K,cheetah,ap,c9100ap, +C9117AXI-N,cheetah,ap,c9100ap, +C9117AXI-Q,cheetah,ap,c9100ap, +C9117AXI-R,cheetah,ap,c9100ap, +C9117AXI-S,cheetah,ap,c9100ap, +C9117AXI-T,cheetah,ap,c9100ap, +C9117AXI-Z,cheetah,ap,c9100ap, +C9120AXE-A,cheetah,ap,c9100ap, +C9120AXE-B,cheetah,ap,c9100ap, +C9120AXE-C,cheetah,ap,c9100ap, +C9120AXE-D,cheetah,ap,c9100ap, +C9120AXE-E,cheetah,ap,c9100ap, +C9120AXE-F,cheetah,ap,c9100ap, +C9120AXE-G,cheetah,ap,c9100ap, +C9120AXE-H,cheetah,ap,c9100ap, +C9120AXE-I,cheetah,ap,c9100ap, +C9120AXE-K,cheetah,ap,c9100ap, +C9120AXE-N,cheetah,ap,c9100ap, +C9120AXE-Q,cheetah,ap,c9100ap, +C9120AXE-R,cheetah,ap,c9100ap, +C9120AXE-S,cheetah,ap,c9100ap, +C9120AXE-T,cheetah,ap,c9100ap, +C9120AXE-Z,cheetah,ap,c9100ap, +C9120AXI-A,cheetah,ap,c9100ap, +C9120AXI-B,cheetah,ap,c9100ap, +C9120AXI-C,cheetah,ap,c9100ap, +C9120AXI-D,cheetah,ap,c9100ap, +C9120AXI-E,cheetah,ap,c9100ap, +C9120AXI-F,cheetah,ap,c9100ap, +C9120AXI-G,cheetah,ap,c9100ap, +C9120AXI-H,cheetah,ap,c9100ap, +C9120AXI-I,cheetah,ap,c9100ap, +C9120AXI-K,cheetah,ap,c9100ap, +C9120AXI-N,cheetah,ap,c9100ap, +C9120AXI-Q,cheetah,ap,c9100ap, +C9120AXI-R,cheetah,ap,c9100ap, +C9120AXI-S,cheetah,ap,c9100ap, +C9120AXI-T,cheetah,ap,c9100ap, +C9120AXI-Z,cheetah,ap,c9100ap, +C9120AXP-A,cheetah,ap,c9100ap, +C9120AXP-B,cheetah,ap,c9100ap, +C9120AXP-C,cheetah,ap,c9100ap, +C9120AXP-D,cheetah,ap,c9100ap, +C9120AXP-E,cheetah,ap,c9100ap, +C9120AXP-F,cheetah,ap,c9100ap, +C9120AXP-G,cheetah,ap,c9100ap, +C9120AXP-H,cheetah,ap,c9100ap, +C9120AXP-I,cheetah,ap,c9100ap, +C9120AXP-K,cheetah,ap,c9100ap, +C9120AXP-N,cheetah,ap,c9100ap, +C9120AXP-Q,cheetah,ap,c9100ap, +C9120AXP-R,cheetah,ap,c9100ap, +C9120AXP-S,cheetah,ap,c9100ap, +C9120AXP-T,cheetah,ap,c9100ap, +C9120AXP-Z,cheetah,ap,c9100ap, +C9130AXE-A,cheetah,ap,c9100ap, +C9130AXE-B,cheetah,ap,c9100ap, +C9130AXE-C,cheetah,ap,c9100ap, +C9130AXE-D,cheetah,ap,c9100ap, +C9130AXE-E,cheetah,ap,c9100ap, +C9130AXE-F,cheetah,ap,c9100ap, +C9130AXE-G,cheetah,ap,c9100ap, +C9130AXE-H,cheetah,ap,c9100ap, +C9130AXE-I,cheetah,ap,c9100ap, +C9130AXE-K,cheetah,ap,c9100ap, +C9130AXE-N,cheetah,ap,c9100ap, +C9130AXE-Q,cheetah,ap,c9100ap, +C9130AXE-R,cheetah,ap,c9100ap, +C9130AXE-S,cheetah,ap,c9100ap, +C9130AXE-T,cheetah,ap,c9100ap, +C9130AXE-Z,cheetah,ap,c9100ap, +C9130AXI-A,cheetah,ap,c9100ap, +C9130AXI-B,cheetah,ap,c9100ap, +C9130AXI-C,cheetah,ap,c9100ap, +C9130AXI-D,cheetah,ap,c9100ap, +C9130AXI-E,cheetah,ap,c9100ap, +C9130AXI-F,cheetah,ap,c9100ap, +C9130AXI-G,cheetah,ap,c9100ap, +C9130AXI-H,cheetah,ap,c9100ap, +C9130AXI-I,cheetah,ap,c9100ap, +C9130AXI-K,cheetah,ap,c9100ap, +C9130AXI-N,cheetah,ap,c9100ap, +C9130AXI-Q,cheetah,ap,c9100ap, +C9130AXI-R,cheetah,ap,c9100ap, +C9130AXI-S,cheetah,ap,c9100ap, +C9130AXI-T,cheetah,ap,c9100ap, +C9130AXI-Z,cheetah,ap,c9100ap, +C9136I-B,cheetah,ap,c9100ap, +C9136I-D,cheetah,ap,c9100ap, +C9136I-E,cheetah,ap,c9100ap, +C9136I-F,cheetah,ap,c9100ap, +C9136I-K,cheetah,ap,c9100ap, +C9200-24P,iosxe,cat9k,c9200, +C9200-24PB,iosxe,cat9k,c9200, +C9200-24PXG,iosxe,cat9k,c9200, +C9200-24T,iosxe,cat9k,c9200, +C9200-48P,iosxe,cat9k,c9200, +C9200-48PB,iosxe,cat9k,c9200, +C9200-48PL,iosxe,cat9k,c9200, +C9200-48PXG,iosxe,cat9k,c9200, +C9200-48T,iosxe,cat9k,c9200, +C9200L-24P-4G,iosxe,cat9k,c9200, +C9200L-24P-4X,iosxe,cat9k,c9200, +C9200L-24PXG-2Y,iosxe,cat9k,c9200, +C9200L-24PXG-4X,iosxe,cat9k,c9200, +C9200L-24T-4G,iosxe,cat9k,c9200, +C9200L-24T-4X,iosxe,cat9k,c9200, +C9200L-48P-4G,iosxe,cat9k,c9200, +C9200L-48P-4X,iosxe,cat9k,c9200, +C9200L-48PL-4G,iosxe,cat9k,c9200, +C9200L-48PL-4X,iosxe,cat9k,c9200, +C9200L-48PXG-2Y,iosxe,cat9k,c9200, +C9200L-48PXG-4X,iosxe,cat9k,c9200, +C9200L-48T-4G,iosxe,cat9k,c9200, +C9200L-48T-4X,iosxe,cat9k,c9200, +C9300-24H,iosxe,cat9k,c9300, +C9300-24P,iosxe,cat9k,c9300, +C9300-24S,iosxe,cat9k,c9300, +C9300-24T,iosxe,cat9k,c9300, +C9300-24U,iosxe,cat9k,c9300, +C9300-24UB,iosxe,cat9k,c9300, +C9300-24UX,iosxe,cat9k,c9300, +C9300-24UXB,iosxe,cat9k,c9300, +C9300-48H,iosxe,cat9k,c9300, +C9300-48P,iosxe,cat9k,c9300, +C9300-48S,iosxe,cat9k,c9300, +C9300-48T,iosxe,cat9k,c9300, +C9300-48U,iosxe,cat9k,c9300, +C9300-48UB,iosxe,cat9k,c9300, +C9300-48UN,iosxe,cat9k,c9300, +C9300-48UXM,iosxe,cat9k,c9300, +C9300L-24P-4G,iosxe,cat9k,c9300, +C9300L-24P-4X,iosxe,cat9k,c9300, +C9300L-24T-4G,iosxe,cat9k,c9300, +C9300L-24T-4X,iosxe,cat9k,c9300, +C9300L-24UXG-2Q,iosxe,cat9k,c9300, +C9300L-24UXG-4X,iosxe,cat9k,c9300, +C9300L-48P-4G,iosxe,cat9k,c9300, +C9300L-48P-4X,iosxe,cat9k,c9300, +C9300L-48PF-4G,iosxe,cat9k,c9300, +C9300L-48PF-4X,iosxe,cat9k,c9300, +C9300L-48T-4G,iosxe,cat9k,c9300, +C9300L-48T-4X,iosxe,cat9k,c9300, +C9300L-48UXG-2Q,iosxe,cat9k,c9300, +C9300L-48UXG-4X,iosxe,cat9k,c9300, +C9404R,iosxe,cat9k,c9400, +C9407R,iosxe,cat9k,c9400, +C9410R,iosxe,cat9k,c9400, +C9500-12Q,iosxe,cat9k,c9500, +C9500-16X,iosxe,cat9k,c9500, +C9500-24Q,iosxe,cat9k,c9500, +C9500-24Y4C,iosxe,cat9k,c9500, +C9500-32C,iosxe,cat9k,c9500, +C9500-32QC,iosxe,cat9k,c9500, +C9500-40X,iosxe,cat9k,c9500, +C9500-48Y4C,iosxe,cat9k,c9500, +C9500X-60L4D,iosxe,cat9k,c9500, +C9606R,iosxe,cat9k,c9600, +C9800-40-K9,iosxe,cat9k,c9800, +C9800-80-K9,iosxe,cat9k,c9800, +C9800-CL-K9,iosxe,cat9k,c9800,c9800cl +C9800-L-C-K9,iosxe,cat9k,c9800,c9800l +C9800-L-F-K9,iosxe,cat9k,c9800,c9800l +CGR-2010/K9,ios,c2k,c2000, +CGR1120/K9,iosxe,c1k,c1100, +CGR1240/K9,ios,c1k,c1200, +CHAS-7505,ios,c7k,c7500, +CHAS-7505-DC,ios,c7k,c7500, +CHAS-7507,ios,c7k,c7500, +CHAS-7507-DC,ios,c7k,c7500, +CHAS-7513,ios,c7k,c7500, +CHAS-7513-DC,ios,c7k,c7500, +CHAS-7576,ios,c7k,c7500, +CHAS-7576-DC,ios,c7k,c7500, +CISCO1001,ios,c1k,c1000, +CISCO1002,ios,c1k,c1000, +CISCO1003,ios,c1k,c1000, +CISCO1004,ios,c1k,c1000, +CISCO1004-I,ios,c1k,c1000, +CISCO1005,ios,c1k,c1000, +CISCO1020,ios,c1k,c1000, +CISCO1401,ios,c1k,c1400, +CISCO1407,ios,c1k,c1400, +CISCO1417,ios,c1k,c1400, +CISCO1601,ios,c1k,c1600, +CISCO1601-R,ios,c1k,c1600, +CISCO1602,ios,c1k,c1600, +CISCO1602-R,ios,c1k,c1600, +CISCO1603,ios,c1k,c1600, +CISCO1603-R,ios,c1k,c1600, +CISCO1604,ios,c1k,c1600, +CISCO1604-R,ios,c1k,c1600, +CISCO1605-R,ios,c1k,c1600, +CISCO1701-K9,ios,c1k,c1700, +CISCO1710-VPN-M/K9,ios,c1k,c1700, +CISCO1711-VPN/K9,ios,c1k,c1700, +CISCO1712-VPN/K9,ios,c1k,c1700, +CISCO1718,ios,c1k,c1700, +CISCO1720,ios,c1k,c1700, +CISCO1721,ios,c1k,c1700, +CISCO1750,ios,c1k,c1700, +CISCO1750-2V,ios,c1k,c1700, +CISCO1750-4V,ios,c1k,c1700, +CISCO1750-ADSL,ios,c1k,c1700, +CISCO1751,ios,c1k,c1700, +CISCO1760,ios,c1k,c1700, +CISCO1801,ios,c1k,c1800, +CISCO1801-M,ios,c1k,c1800, +CISCO1801-M/K9,ios,c1k,c1800, +CISCO1801/K9,ios,c1k,c1800, +CISCO1801W-AG-A/K9,ios,c1k,c1800, +CISCO1801W-AG-B/K9,ios,c1k,c1800, +CISCO1801W-AG-C/K9,ios,c1k,c1800, +CISCO1801W-AG-E/K9,ios,c1k,c1800, +CISCO1801W-AG-N/K9,ios,c1k,c1800, +CISCO1801WM-AGB/K9,ios,c1k,c1800, +CISCO1801WM-AGE/K9,ios,c1k,c1800, +CISCO1802,ios,c1k,c1800, +CISCO1802/K9,ios,c1k,c1800, +CISCO1802W-AG-E/K9,ios,c1k,c1800, +CISCO1803/K9,ios,c1k,c1800, +CISCO1803W-AG-A/K9,ios,c1k,c1800, +CISCO1803W-AG-B/K9,ios,c1k,c1800, +CISCO1803W-AG-E/K9,ios,c1k,c1800, +CISCO1805-D,ios,c1k,c1800, +CISCO1805-D/K9,ios,c1k,c1800, +CISCO1805-EJ,ios,c1k,c1800, +CISCO1811/K9,ios,c1k,c1800, +CISCO1811W-AG-A/K9,ios,c1k,c1800, +CISCO1811W-AG-B/K9,ios,c1k,c1800, +CISCO1811W-AG-C/K9,ios,c1k,c1800, +CISCO1811W-AG-N/K9,ios,c1k,c1800, +CISCO1812-J/K9,ios,c1k,c1800, +CISCO1812/K9,ios,c1k,c1800, +CISCO1812W-AG-C/K9,ios,c1k,c1800, +CISCO1812W-AG-E/K9,ios,c1k,c1800, +CISCO1812W-AG-J/K9,ios,c1k,c1800, +CISCO1812W-AG-P/K9,ios,c1k,c1800, +CISCO1841,ios,c1k,c1800, +CISCO1841C/K9,ios,c1k,c1800, +CISCO1905/K9,ios,c1k,c1900, +CISCO1921/K9,ios,c1k,c1900, +CISCO1921DC/K9,ios,c1k,c1900, +CISCO1941/K9,ios,c1k,c1900, +CISCO2102,ios,c2k,c2100, +CISCO2202,ios,c2k,c2200, +CISCO2501,ios,c2k,c2500, +CISCO2502,ios,c2k,c2500, +CISCO2502LF,ios,c2k,c2500, +CISCO2503,ios,c2k,c2500, +CISCO2504,ios,c2k,c2500, +CISCO2505,ios,c2k,c2500, +CISCO2506,ios,c2k,c2500, +CISCO2507,ios,c2k,c2500, +CISCO2513,ios,c2k,c2500, +CISCO2514,ios,c2k,c2500, +CISCO2515,ios,c2k,c2500, +CISCO2516,ios,c2k,c2500, +CISCO2517,ios,c2k,c2500, +CISCO2518,ios,c2k,c2500, +CISCO2519,ios,c2k,c2500, +CISCO2520,ios,c2k,c2500, +CISCO2520-XAD,ios,c2k,c2500, +CISCO2521,ios,c2k,c2500, +CISCO2522,ios,c2k,c2500, +CISCO2523,ios,c2k,c2500, +CISCO2524,ios,c2k,c2500, +CISCO2525,ios,c2k,c2500, +CISCO2801,ios,c2k,c2800, +CISCO2801C/K9,ios,c2k,c2800, +CISCO2811,ios,c2k,c2800, +CISCO2811C/K9,ios,c2k,c2800, +CISCO2821,ios,c2k,c2800, +CISCO2821C/K9,ios,c2k,c2800, +CISCO2851,ios,c2k,c2800, +CISCO2901/K9,ios,c2k,c2900, +CISCO2911-T/K9,ios,c2k,c2900, +CISCO2911/K9,ios,c2k,c2900, +CISCO2921/K9,ios,c2k,c2900, +CISCO2951/K9,ios,c2k,c2900, +CISCO3101,ios,c3k,c3100, +CISCO3102,ios,c3k,c3100, +CISCO3103,ios,c3k,c3100, +CISCO3104,ios,c3k,c3100, +CISCO3202,ios,c3k,c3200, +CISCO3204,ios,c3k,c3200, +CISCO3220,ios,c3k,c3200, +CISCO3251MARC,ios,c3k,c3200, +CISCO3725,ios,c3k,c3700, +CISCO3745,ios,c3k,c3700, +CISCO3825,ios,c3k,c3800, +CISCO3825C/K9,ios,c3k,c3800, +CISCO3845,ios,c3k,c3800, +CISCO3845C/K9,ios,c3k,c3800, +CISCO3925-CHASSIS,ios,c3k,c3900, +CISCO3945-CHASSIS,ios,c3k,c3900, +CISCO4000,iosxe,c4k,c4000, +CISCO4500,iosxe,c4k,c4500, +CISCO5915RA-K9,ios,c5k,c5900, +CISCO5915RC-K9,ios,c5k,c5900, +CISCO5921-K9,ios,c5k,c5900, +CISCO5930-K9,ios,c5k,c5900, +CISCO5940RA-K9,ios,c5k,c5900, +CISCO5940RC-K9,ios,c5k,c5900, +CISCO7000,ios,c7k,c7000, +CISCO7010,ios,c7k,c7000, +CISCO7120-4T1,ios,c7k,c7100, +CISCO7120-AE3,ios,c7k,c7100, +CISCO7120-AT3,ios,c7k,c7100, +CISCO7120-E3,ios,c7k,c7100, +CISCO7120-SMI3,ios,c7k,c7100, +CISCO7120-T3,ios,c7k,c7100, +CISCO7140-2AE3,ios,c7k,c7100, +CISCO7140-2AT3,ios,c7k,c7100, +CISCO7140-2E3,ios,c7k,c7100, +CISCO7140-2FE,ios,c7k,c7100, +CISCO7140-2MM3,ios,c7k,c7100, +CISCO7140-2T3,ios,c7k,c7100, +CISCO7140-8T,ios,c7k,c7100, +CISCO7201,ios,c7k,c7200, +CISCO7202,ios,c7k,c7200, +CISCO7204,ios,c7k,c7200, +CISCO7206,ios,c7k,c7200, +CISCO7301,ios,c7k,c7300, +CISCO7304,ios,c7k,c7300, +CISCO7401ASR-BB,ios,c7k,c7400, +CISCO7401ASR-CP,ios,c7k,c7400, +CISCO7603,ios,c7k,c7600, +CISCO7603-S,ios,c7k,c7600, +CISCO7604,ios,c7k,c7600, +CISCO7606,ios,c7k,c7600, +CISCO7606-S,ios,c7k,c7600, +CISCO7609,ios,c7k,c7600, +CISCO7609-S,ios,c7k,c7600, +CISCO7613,ios,c7k,c7600, +CISCO7613-S,ios,c7k,c7600, +CR-4430-B,iosxe,c4k,c4400, +CR-4430-K9,iosxe,c4k,c4400, +CR-4450-ICDN-K9,iosxe,c4k,c4400, +CW9162I-B,cheetah,ap,cw9100, +CW9162I-D,cheetah,ap,cw9100, +CW9162I-E,cheetah,ap,cw9100, +CW9162I-F,cheetah,ap,cw9100, +CW9162I-K,cheetah,ap,cw9100, +CW9164I-B,cheetah,ap,cw9100, +CW9164I-D,cheetah,ap,cw9100, +CW9164I-E,cheetah,ap,cw9100, +CW9164I-F,cheetah,ap,cw9100, +CW9164I-K,cheetah,ap,cw9100, +CW9164I-ROW,cheetah,ap,cw9100, +CW9166D1-B,cheetah,ap,cw9100, +CW9166D1-D,cheetah,ap,cw9100, +CW9166D1-E,cheetah,ap,cw9100, +CW9166D1-F,cheetah,ap,cw9100, +CW9166D1-K,cheetah,ap,cw9100, +CW9166I-B,cheetah,ap,cw9100, +CW9166I-D,cheetah,ap,cw9100, +CW9166I-E,cheetah,ap,cw9100, +CW9166I-F,cheetah,ap,cw9100, +CW9166I-K,cheetah,ap,cw9100, +CW9176I,cheetah,ap,cw9100, +CW9178I,cheetah,ap,cw9100, +CW9800H1,iosxe,cat9k,c9800, +CW9800H2,iosxe,cat9k,c9800, +CW9800L,iosxe,cat9k,c9800, +ESS-3300-24T-CON-A,iosxe,ess3k,ess3300, +ESS-3300-24T-CON-E,iosxe,ess3k,ess3300, +ESS-3300-24T-NCP-A,iosxe,ess3k,ess3300, +ESS-3300-24T-NCP-E,iosxe,ess3k,ess3300, +ESS-3300-CON-A,iosxe,ess3k,ess3300, +ESS-3300-CON-E,iosxe,ess3k,ess3300, +ESS-3300-NCP-A,iosxe,ess3k,ess3300, +ESS-3300-NCP-E,iosxe,ess3k,ess3300, +ESS-9300-10X-E,iosxe,ess9k,es9300, +ESS-9300-8X16T-W,iosxe,ess9k,es9300, +IE-3100-18T2C-CC-E,iosxe,ie3k,ie3100, +IE-3100-18T2C-E,iosxe,ie3k,ie3100, +IE-3100-3P1U2S-E,iosxe,ie3k,ie3100, +IE-3100-4P2S-E,iosxe,ie3k,ie3100, +IE-3100-4T2S-E,iosxe,ie3k,ie3100, +IE-3100-6P2U2C-E,iosxe,ie3k,ie3100, +IE-3100-8P2C-E,iosxe,ie3k,ie3100, +IE-3100-8T2C-E,iosxe,ie3k,ie3100, +IE-3100-8T4S-E,iosxe,ie3k,ie3100, +IE-3100H-6FT2T-E,iosxe,ie3k,ie3100h, +IE-3100H-8T-E,iosxe,ie3k,ie3100h, +IE-3105-18T2C-E,iosxe,ie3k,ie3105, +IE-3105-8T2C-E,iosxe,ie3k,ie3105, +IE-3200-8P2S-E,iosxe,ie3k,ie3200, +IE-3200-8T2S-E,iosxe,ie3k,ie3200, +IE-3300-8P2S-A,iosxe,ie3k,ie3300, +IE-3300-8P2S-E,iosxe,ie3k,ie3300, +IE-3300-8T2S-A,iosxe,ie3k,ie3300, +IE-3300-8T2S-E,iosxe,ie3k,ie3300, +IE-3300-8T2X-A,iosxe,ie3k,ie3300, +IE-3300-8T2X-E,iosxe,ie3k,ie3300, +IE-3300-8U2X-A,iosxe,ie3k,ie3300, +IE-3300-8U2X-E,iosxe,ie3k,ie3300, +IE-3400-8P2S-A,iosxe,ie3k,ie3400, +IE-3400-8P2S-E,iosxe,ie3k,ie3400, +IE-3400-8T2S-A,iosxe,ie3k,ie3400, +IE-3400-8T2S-E,iosxe,ie3k,ie3400, +IE-3400H-16FT-A,iosxe,ie3k,ie3400h, +IE-3400H-16FT-E,iosxe,ie3k,ie3400h, +IE-3400H-16T-A,iosxe,ie3k,ie3400h, +IE-3400H-16T-E,iosxe,ie3k,ie3400h, +IE-3400H-24FT-A,iosxe,ie3k,ie3400h, +IE-3400H-24FT-E,iosxe,ie3k,ie3400h, +IE-3400H-24T-A,iosxe,ie3k,ie3400h, +IE-3400H-24T-E,iosxe,ie3k,ie3400h, +IE-3400H-8FT-A,iosxe,ie3k,ie3400h, +IE-3400H-8FT-E,iosxe,ie3k,ie3400h, +IE-3400H-8T-A,iosxe,ie3k,ie3400h, +IE-3400H-8T-E,iosxe,ie3k,ie3400h, +IE-3500-8P3S-A,iosxe,ie3k,ie3500, +IE-3500-8P3S-E,iosxe,ie3k,ie3500, +IE-3500-8T3S-A,iosxe,ie3k,ie3500, +IE-3500-8T3S-E,iosxe,ie3k,ie3500, +IE-3500-8T3X-A,iosxe,ie3k,ie3500, +IE-3500-8T3X-E,iosxe,ie3k,ie3500, +IE-3500-8U3X-A,iosxe,ie3k,ie3500, +IE-3500-8U3X-E,iosxe,ie3k,ie3500, +IE-3500H-12FT4T-A,iosxe,ie3k,ie3500h, +IE-3500H-12FT4T-E,iosxe,ie3k,ie3500h, +IE-3500H-12P2MU2XA,iosxe,ie3k,ie3500h, +IE-3500H-12P2MU2XE,iosxe,ie3k,ie3500h, +IE-3500H-14P2T-A,iosxe,ie3k,ie3500h, +IE-3500H-14P2T-E,iosxe,ie3k,ie3500h, +IE-3500H-16T-A,iosxe,ie3k,ie3500h, +IE-3500H-16T-E,iosxe,ie3k,ie3500h, +IE-3500H-20FT4T-A,iosxe,ie3k,ie3500h, +IE-3500H-20FT4T-E,iosxe,ie3k,ie3500h, +IE-3500H-24T-A,iosxe,ie3k,ie3500h, +IE-3500H-24T-E,iosxe,ie3k,ie3500h, +IE-3500H-8T-A,iosxe,ie3k,ie3500h, +IE-3500H-8T-E,iosxe,ie3k,ie3500h, +IE-3505-8P3S-A,iosxe,ie3k,ie3505, +IE-3505-8P3S-E,iosxe,ie3k,ie3505, +IE-3505-8T3S-A,iosxe,ie3k,ie3505, +IE-3505-8T3S-E,iosxe,ie3k,ie3505, +IE-3505H-16T-A,iosxe,ie3k,ie3505h, +IE-3505H-16T-E,iosxe,ie3k,ie3505h, +IE-9310-16P8S4X-A,iosxe,ie9k,ie9310, +IE-9310-16P8S4X-E,iosxe,ie9k,ie9310, +IE-9310-26S2C-A,iosxe,ie9k,ie9310, +IE-9310-26S2C-E,iosxe,ie9k,ie9310, +IE-9320-16P8U4X-A,iosxe,ie9k,ie9320, +IE-9320-16P8U4X-E,iosxe,ie9k,ie9320, +IE-9320-22S2C4X-A,iosxe,ie9k,ie9320, +IE-9320-22S2C4X-E,iosxe,ie9k,ie9320, +IE-9320-24P4S-A,iosxe,ie9k,ie9320, +IE-9320-24P4S-E,iosxe,ie9k,ie9320, +IE-9320-24P4X-A,iosxe,ie9k,ie9320, +IE-9320-24P4X-E,iosxe,ie9k,ie9320, +IE-9320-24T4X-A,iosxe,ie9k,ie9320, +IE-9320-24T4X-E,iosxe,ie9k,ie9320, +IE-9320-26S2C-A,iosxe,ie9k,ie9320, +IE-9320-26S2C-E,iosxe,ie9k,ie9320, +IR1101-K9,iosxe,ir1k,ir1101, +IR1833-K9,iosxe,ir1k,ir1800, +ISR1100-4G,iosxe,isr1k,isr1100, +ISR1100-4GLTEGB,iosxe,isr1k,isr1100, +ISR1100-4GLTENA,iosxe,isr1k,isr1100, +ISR1100-6G,iosxe,isr1k,isr1100, +ISR1100X-4G,iosxe,isr1k,isr1100, +ISR1100X-6G,iosxe,isr1k,isr1100, +ISR4221-B/K9,iosxe,isr4k,isr4200, +ISR4221/K9,iosxe,isr4k,isr4200, +ISR4221X/K9,iosxe,isr4k,isr4200, +ISR4321-B/K9,iosxe,isr4k,isr4300, +ISR4321/K9,iosxe,isr4k,isr4300, +ISR4331-B/K9,iosxe,isr4k,isr4300, +ISR4331-DC/K9,iosxe,isr4k,isr4300, +ISR4331/K9,iosxe,isr4k,isr4300, +ISR4351/K9,iosxe,isr4k,isr4300, +ISR4431/K9,iosxe,isr4k,isr4400, +ISR4461/K9,iosxe,isr4k,isr4400, +ME-C3750-24TE-M,iosxe,cat3k,c3700, +MWR-1900-27,ios,c1k,c1900, +N1K-1110-S,nxos,n1k,n1100, +N1K-1110-X,nxos,n1k,n1100, +N1K-C1010,nxos,n1k,n1000, +N1K-C1010-X,nxos,n1k,n1000, +N2K-B22FTS-P,nxos,n2k,n2000, +N2K-C2148T-1GE,nxos,n2k,n2000, +N2K-C2224TP-1GE,nxos,n2k,n2200, +N2K-C2232PP-10GE,nxos,n2k,n2000, +N2K-C2232TM-10GE,nxos,n2k,n2200, +N2K-C2232TM-E-10GE,nxos,n2k,n2200, +N2K-C2248PQ-10GE,nxos,n2k,n2200, +N2K-C2248TP-1GE,nxos,n2k,n2200, +N2K-C2248TP-E-1GE,nxos,n2k,n2000, +N2K-C2332TQ-10GT,nxos,n2k,n2300, +N2K-C2348TQ,nxos,n2k,n2300, +N2K-C2348TQ-E,nxos,n2k,n2300, +N2K-C2348UPQ,nxos,n2k,n2300, +N3K-C3016Q-40GE,nxos,n3k,n3000, +N3K-C3048TP-1GE,nxos,n3k,n3000, +N3K-C3064PQ,nxos,n3k,n3000, +N3K-C3064PQ-10GE,nxos,n3k,n3000, +N3K-C3064PQ-10GX,nxos,n3k,n3000, +N3K-C3064TQ-10GT,nxos,n3k,n3000, +N3K-C31108PC-V,nxos,n3k,n3100, +N3K-C31108TC-V,nxos,n3k,n3100, +N3K-C31128PQ-10GE,nxos,n3k,n3100, +N3K-C3132C-Z,nxos,n3k,n3100, +N3K-C3132Q-40GE,nxos,n3k,n3100, +N3K-C3132Q-40GX,nxos,n3k,n3100, +N3K-C3132Q-V,nxos,n3k,n3100, +N3K-C3132Q-XL,nxos,n3k,n3100, +N3K-C3164Q-40GE,nxos,n3k,n3100, +N3K-C3172PQ-10GE,nxos,n3k,n3100, +N3K-C3172PQ-XL,nxos,n3k,n3100, +N3K-C3172TQ-10GT,nxos,n3k,n3100, +N3K-C3172TQ-XL,nxos,n3k,n3100, +N3K-C3232C,nxos,n3k,n3200, +N3K-C3264C-E,nxos,n3k,n3200, +N3K-C3264Q,nxos,n3k,n3200, +N3K-C3408-S,nxos,n3k,n3400, +N3K-C34180YC,nxos,n3k,n3400, +N3K-C34200YC-SM,nxos,n3k,n3400, +N3K-C3432D-S,nxos,n3k,n3400, +N3K-C3464C,nxos,n3k,n3400, +N3K-C3548P-10G,nxos,n3k,n3500, +N3K-C3548P-10GX,nxos,n3k,n3500, +N3K-C3548P-XL,nxos,n3k,n3500, +N3K-C36180YC-R,nxos,n3k,n3600, +N3K-C3636C-R,nxos,n3k,n3600, +N4K-4001I-XPX,nxos,n4k,n4000, +N4K-4005I-XPX,nxos,n4k,n4000, +N540-12Z16G,iosxr,ncs500,n540, +N540-12Z20G,iosxr,ncs500,n540, +N540-12Z20G-SYS-A,iosxr,ncs500,ncs540, +N540-24Q8L2DD-SYS,iosxr,ncs500,ncs540, +N540-24Z8Q2C,iosxr,ncs500,n540, +N540-24Z8Q2C-M,iosxr,ncs500,ncs540, +N540-28Z4C,iosxr,ncs500,n540, +N540-28Z4C-SYS-A,iosxr,ncs500,ncs540, +N540-6Z14G,iosxr,ncs500,n540, +N540-6Z14G-SYS-D,iosxr,ncs500,ncs540, +N540-6Z14S,iosxr,ncs500,n540, +N540-6Z14S-SYS-D,iosxr,ncs500,ncs540, +N540-6Z18G,iosxr,ncs500,n540, +N540-6Z18G-SYS-A,iosxr,ncs500,ncs540, +N540-ACC-M,iosxr,ncs500,n540, +N540-ACC-SYS,iosxr,ncs500,ncs540, +N540-FH-AGG,iosxr,ncs500,n540, +N540-FH-CSR,iosxr,ncs500,n540, +N540-FH-CSR-SYS,iosxr,ncs500,ncs540, +N540-FH-IP65,iosxr,ncs500,n540, +N540X-12Z16G,iosxr,ncs500x,n540x, +N540X-16Z4G8Q2C,iosxr,ncs500x,n540x, +N540X-16Z8Q2C,iosxr,ncs500x,n540x, +N540X-4Z14G2Q,iosxr,ncs500x,n540x, +N540X-4Z14G2Q-A,iosxr,ncs500,ncs540x, +N540X-6Z18G,iosxr,ncs500x,n540x, +N540X-6Z18G-M,iosxr,ncs500x,n540x, +N540X-6Z18G-SYS-A,iosxr,ncs500x,ncs540x, +N540X-8Z16G-M,iosxr,ncs500x,n540x, +N540X-8Z16G-SYS-A,iosxr,ncs500,ncs540x, +N540X-ACC-SYS,iosxr,ncs500,ncs540x, +N560-4,iosxr,ncs500,n560, +N560-4-E,iosxr,ncs500,n560, +N560-7-E,iosxr,ncs500,n560, +N5K-C5010P-BF,nxos,n5k,n5000, +N5K-C5020P-BF,nxos,n5k,n5000, +N5K-C5548P,nxos,n5k,n5500, +N5K-C5548UP,nxos,n5k,n5500, +N5K-C5596T,nxos,n5k,n5500, +N5K-C5596UP,nxos,n5k,n5500, +N5K-C56128P,nxos,n5k,n5600, +N5K-C5624Q,nxos,n5k,n5600, +N5K-C5648Q,nxos,n5k,n5600, +N5K-C5672UP,nxos,n5k,n5600, +N5K-C5672UP-16G,nxos,n5k,n5600, +N5K-C5696Q,nxos,n5k,n5600, +N6K-C6001-64P,nxos,n6k,n6000, +N6K-C6001-64T,nxos,n6k,n6000, +N6K-C6004,nxos,n6k,n6000, +N6K-C6004-96Q,nxos,n6k,n6000, +N77-C7702,nxos,n7k,n7700, +N77-C7706,nxos,n7k,n7700, +N77-C7710,nxos,n7k,n7700, +N77-C7718,nxos,n7k,n7700, +N7K-C7004,nxos,n7k,n7000, +N7K-C7009,nxos,n7k,n7000, +N7K-C7010,nxos,n7k,n7000, +N7K-C7018,nxos,n7k,n7000, +N9K-C92160YC-X,nxos,n9k,n9200, +N9K-C92300YC,nxos,n9k,n9200, +N9K-C92304QC,nxos,n9k,n9200, +N9K-C9232C,nxos,n9k,n9200, +N9K-C92348GC-X,nxos,n9k,n9200, +N9K-C9236C,nxos,n9k,n9200, +N9K-C9272Q,nxos,n9k,n9200, +N9K-C93108TC-EX,nxos,n9k,n9300, +N9K-C93108TC-EX-24,nxos,n9k,n9300, +N9K-C93108TC-FX,nxos,n9k,n9300, +N9K-C93108TC-FX-24,nxos,n9k,n9300, +N9K-C93108TC-FX3P,nxos,n9k,n9300, +N9K-C93120TX,nxos,n9k,n9300, +N9K-C93128TX,nxos,n9k,n9300, +N9K-C9316D-GX,nxos,n9k,n9300, +N9K-C93180LC-EX,nxos,n9k,n9300, +N9K-C93180YC-EX,nxos,n9k,n9300, +N9K-C93180YC-EX-24,nxos,n9k,n9300, +N9K-C93180YC-FX,nxos,n9k,n9300, +N9K-C93180YC-FX-24,nxos,n9k,n9300, +N9K-C93180YC-FX3S,nxos,n9k,n9300, +N9K-C93216TC-FX2,nxos,n9k,n9300, +N9K-C93240YC-FX2,nxos,n9k,n9300, +N9K-C93240YC-FX2Z,nxos,n9k,n9300, +N9K-C9332C,nxos,n9k,n9300, +N9K-C9332PQ,nxos,n9k,n9300, +N9K-C93360YC-FX2,nxos,n9k,n9300, +N9K-C9336C-FX2,nxos,n9k,n9300, +N9K-C9336C-FX2-E,nxos,n9k,n9300, +N9K-C9336PQ,nxos,n9k,n9300, +N9K-C9348GC-FXP,nxos,n9k,n9300, +N9K-C9358GY-FXP,nxos,n9k,n9300, +N9K-C93600CD-GX,nxos,n9k,n9300, +N9K-C9364C,nxos,n9k,n9300, +N9K-C9364C-GX,nxos,n9k,n9300, +N9K-C9372PX,nxos,n9k,n9300, +N9K-C9372PX-E,nxos,n9k,n9300, +N9K-C9372TX,nxos,n9k,n9300, +N9K-C9372TX-E,nxos,n9k,n9300, +N9K-C9396PX,nxos,n9k,n9300, +N9K-C9396TX,nxos,n9k,n9300, +N9K-C9504,nxos,n9k,n9500, +N9K-C9508,nxos,n9k,n9500, +N9K-C9516,nxos,n9k,n9500, +NCS-5001,iosxr,ncs5k,ncs5000, +NCS-5002,iosxr,ncs5k,ncs5000, +NCS-5011,iosxr,ncs5k,ncs5000, +NCS-5064,iosxr,ncs5k,ncs5000, +NCS-5501,iosxr,ncs5k,ncs5500, +NCS-5501-SE,iosxr,ncs5k,ncs5500, +NCS-5502,iosxr,ncs5k,ncs5500, +NCS-5502-SE,iosxr,ncs5k,ncs5500, +NCS-5504,iosxr,ncs5k,ncs5500, +NCS-5508,iosxr,ncs5k,ncs5500, +NCS-5516,iosxr,ncs5k,ncs5500, +NCS-55A1-24H,iosxr,ncs5k,ncs5500,ncs55a1 +NCS-55A1-24Q6H-S,iosxr,ncs5k,ncs55a1, +NCS-55A1-36H-S,iosxr,ncs5k,ncs55a1, +NCS-55A1-36H-SE-S,iosxr,ncs5k,ncs55a1, +NCS-55A1-48Q6H,iosxr,ncs5k,ncs55a1, +NCS-55A2-MOD,iosxr,ncs5k,ncs5500,ncs55a2 +NCS-55A2-MOD-HD-S,iosxr,ncs5k,ncs5500,ncs55a2 +NCS-55A2-MOD-HX-S,iosxr,ncs5k,ncs5500,ncs55a2 +NCS-55A2-MOD-S,iosxr,ncs5k,ncs5500,ncs55a2 +NCS-55A2-MOD-SE,iosxr,ncs5k,ncs5500,ncs55a2 +NCS-55A2-MOD-SE-S,iosxr,ncs5k,ncs5500,ncs55a2 +NCS-57B1-5D24H-SE,iosxr,ncs5k,ncs5700,ncs57b1 +NCS-57B1-5DSE-SYS,iosxr,ncs5k,ncs5700,ncs57b1 +NCS-57B1-6D24-SYS,iosxr,ncs5k,ncs5700,ncs57b1 +NCS-57B1-6D24H-S,iosxr,ncs5k,ncs5700,ncs57b1 +NCS-57C1-48Q6-SYS,iosxr,ncs5k,ncs5700,ncs57c1 +NCS-57C1-48Q6D-S,iosxr,ncs5k,ncs5700,ncs57c1 +NCS-57C3-MOD,iosxr,ncs5k,ncs5700,ncs57c3 +NCS-57C3-MOD-SE,iosxr,ncs5k,ncs5700,ncs57c3 +NCS-57C3-MOD-SYS,iosxr,ncs5k,ncs5700, +NCS-57C3-MODS-SYS,iosxr,ncs5k,ncs5700, +NCS-57D2-18D-SYS,iosxr,ncs5k,ncs5700,ncs57d2 +NCS-57D2-18DD-S,iosxr,ncs5k,ncs5700,ncs57d2 +NCS-6008,iosxr,ncs6k,ncs6000, +NCS-F-CHASS,iosxr,ncs6k,ncs6000, +NCS1001-K9,iosxr,ncs1k,ncs1000, +NCS1002-K9,iosxr,ncs1k,ncs1000, +NCS1002-LIC-K9,iosxr,ncs1k,ncs1000, +NCS1004,iosxr,ncs1k,ncs1000, +NCS2002-SA,iosxr,ncs2k,ncs2000, +NCS2006-SA,iosxr,ncs2k,ncs2000, +NCS2015-SA-AC,iosxr,ncs2k,ncs2000, +NCS2015-SA-DC,iosxr,ncs2k,ncs2000, +NCS4009-SA-AC,iosxr,ncs4k,ncs4000, +NCS4009-SA-DC,iosxr,ncs4k,ncs4000, +NCS4016-SA-AC,iosxr,ncs4k,ncs4000, +NCS4016-SA-DC,iosxr,ncs4k,ncs4000, +NCS4201-SA,iosxe,ncs4k,ncs4200, +NCS4202-SA,iosxe,ncs4k,ncs4200, +NCS4206-SA,iosxe,ncs4k,ncs4200, +NCS4216-F2B-SA,iosxe,ncs4k,ncs4200, +NCS4216-SA,iosxe,ncs4k,ncs4200, +NCS4KF-SA-DC,iosxr,ncs4k,ncs4000, +Nexus1000V,nxos,n1k,n1000, +Nexus1000Vh,nxos,n1k,n1000, +Nexus9000v,nxos,n9k,n9000, +R-IOSXRV9000-CC,iosxr,iosxrv,xrv9000, +SPIAD2901-8FXS/K9,ios,c2k,c2900, +WS-C1000,iosxe,cat1k,c1000, +WS-C1131,iosxe,cat1k,c1100, +WS-C1134,iosxe,cat1k,c1100, +WS-C1141,iosxe,cat1k,c1100, +WS-C1143,iosxe,cat1k,c1100, +WS-C1144,iosxe,cat1k,c1100, +WS-C1201,iosxe,cat1k,c1200, +WS-C1202,iosxe,cat1k,c1200, +WS-C1211,iosxe,cat1k,c1200, +WS-C1212,iosxe,cat1k,c1200, +WS-C1221,iosxe,cat1k,c1200, +WS-C1241,iosxe,cat1k,c1200, +WS-C1251,iosxe,cat1k,c1200, +WS-C1261,iosxe,cat1k,c1200, +WS-C1400,iosxe,cat1k,c1400, +WS-C1600,iosxe,cat1k,c1600, +WS-C1700,iosxe,cat1k,c1700, +WS-C1800,iosxe,cat1k,c1800, +WS-C1912-A,iosxe,cat1k,c1900, +WS-C1912-EN,iosxe,cat1k,c1900, +WS-C1912C-A,iosxe,cat1k,c1900, +WS-C1912C-EN,iosxe,cat1k,c1900, +WS-C1924-A,iosxe,cat1k,c1900, +WS-C1924-EN,iosxe,cat1k,c1900, +WS-C1924-EN-DC,iosxe,cat1k,c1900, +WS-C1924C-A,iosxe,cat1k,c1900, +WS-C1924C-EN,iosxe,cat1k,c1900, +WS-C1924F-A,iosxe,cat1k,c1900, +WS-C1924F-EN,iosxe,cat1k,c1900, +WS-C2100,iosxe,cat2k,c2100, +WS-C2350-48TD-S,iosxe,cat2k,c2300, +WS-C2350-48TD-SD,iosxe,cat2k,c2300, +WS-C2360-48TD-S,iosxe,cat2k,c2300, +WS-C2600,iosxe,cat2k,c2600, +WS-C2802,iosxe,cat2k,c2800, +WS-C2808,iosxe,cat2k,c2800, +WS-C2822-A,iosxe,cat2k,c2800, +WS-C2822-EN,iosxe,cat2k,c2800, +WS-C2828-A,iosxe,cat2k,c2800, +WS-C2828-EN,iosxe,cat2k,c2800, +WS-C2901,iosxe,cat2k,c2900, +WS-C2902,iosxe,cat2k,c2900, +WS-C2908-XL,iosxe,cat2k,c2900, +WS-C2912-LRE-XL,iosxe,cat2k,c2900, +WS-C2912-XL-A,iosxe,cat2k,c2900, +WS-C2912-XL-EN,iosxe,cat2k,c2900, +WS-C2912MF-XL,iosxe,cat2k,c2900, +WS-C2916M-XL,iosxe,cat2k,c2900, +WS-C2918-24TC-C,iosxe,cat2k,c2900, +WS-C2918-24TT-C,iosxe,cat2k,c2900, +WS-C2918-48TC-C,iosxe,cat2k,c2900, +WS-C2918-48TT-C,iosxe,cat2k,c2900, +WS-C2924-LRE-XL,iosxe,cat2k,c2900, +WS-C2924-XL,iosxe,cat2k,c2900, +WS-C2924-XL-A,iosxe,cat2k,c2900, +WS-C2924-XL-EN,iosxe,cat2k,c2900, +WS-C2924C-XL,iosxe,cat2k,c2900, +WS-C2924C-XL-A,iosxe,cat2k,c2900, +WS-C2924C-XL-EN,iosxe,cat2k,c2900, +WS-C2924M-XL-A,iosxe,cat2k,c2900, +WS-C2924M-XL-EN,iosxe,cat2k,c2900, +WS-C2924M-XL-EN-DC,iosxe,cat2k,c2900, +WS-C2926F,iosxe,cat2k,c2900, +WS-C2926GL,iosxe,cat2k,c2900, +WS-C2926GS,iosxe,cat2k,c2900, +WS-C2926T,iosxe,cat2k,c2900, +WS-C2928-24LT-C,iosxe,cat2k,c2900, +WS-C2928-24TC-C,iosxe,cat2k,c2900, +WS-C2928-48TC-C,iosxe,cat2k,c2900, +WS-C2940-8TF-S,iosxe,cat2k,c2900, +WS-C2940-8TT-S,iosxe,cat2k,c2900, +WS-C2948G,iosxe,cat2k,c2900, +WS-C2948G-GE-TX,iosxe,cat2k,c2900, +WS-C2948G-L3,iosxe,cat2k,c2900, +WS-C2948GL3-DC,iosxe,cat2k,c2900, +WS-C2950-12,iosxe,cat2k,c2900, +WS-C2950-24,iosxe,cat2k,c2900, +WS-C2950C-24,iosxe,cat2k,c2900, +WS-C2950G-12-EI,iosxe,cat2k,c2900, +WS-C2950G-24-EI,iosxe,cat2k,c2900, +WS-C2950G-24-EI-DC,iosxe,cat2k,c2900, +WS-C2950G-48-EI,iosxe,cat2k,c2900, +WS-C2950LRE-24-997,iosxe,cat2k,c2900, +WS-C2950ST-24-LRE,iosxe,cat2k,c2900, +WS-C2950ST-8-LRE,iosxe,cat2k,c2900, +WS-C2950SX-24,iosxe,cat2k,c2900, +WS-C2950SX-48-SI,iosxe,cat2k,c2900, +WS-C2950T-24,iosxe,cat2k,c2900, +WS-C2950T-48-SI,iosxe,cat2k,c2900, +WS-C2955C-12,iosxe,cat2k,c2900, +WS-C2955S-12,iosxe,cat2k,c2900, +WS-C2955T-12,iosxe,cat2k,c2900, +WS-C2960+24LC-L,iosxe,cat2k,c2900, +WS-C2960+24LC-S,iosxe,cat2k,c2900, +WS-C2960+24PC-L,iosxe,cat2k,c2900, +WS-C2960+24PC-S,iosxe,cat2k,c2900, +WS-C2960+24TC-L,iosxe,cat2k,c2900, +WS-C2960+24TC-S,iosxe,cat2k,c2900, +WS-C2960+48PST-L,iosxe,cat2k,c2900, +WS-C2960+48PST-S,iosxe,cat2k,c2900, +WS-C2960+48TC-L,iosxe,cat2k,c2900, +WS-C2960+48TC-S,iosxe,cat2k,c2900, +WS-C2960-24-S,iosxe,cat2k,c2900, +WS-C2960-24LC-S,iosxe,cat2k,c2900, +WS-C2960-24LT-L,iosxe,cat2k,c2900, +WS-C2960-24PC-L,iosxe,cat2k,c2900, +WS-C2960-24PC-S,iosxe,cat2k,c2900, +WS-C2960-24TC-L,iosxe,cat2k,c2900, +WS-C2960-24TC-S,iosxe,cat2k,c2900, +WS-C2960-24TT-L,iosxe,cat2k,c2900, +WS-C2960-48PST-L,iosxe,cat2k,c2900, +WS-C2960-48PST-S,iosxe,cat2k,c2900, +WS-C2960-48TC-L,iosxe,cat2k,c2900, +WS-C2960-48TC-S,iosxe,cat2k,c2900, +WS-C2960-48TT-L,iosxe,cat2k,c2900, +WS-C2960-48TT-S,iosxe,cat2k,c2900, +WS-C2960-8TC-L,iosxe,cat2k,c2900, +WS-C2960-8TC-S,iosxe,cat2k,c2900, +WS-C2960C-12PC-L,iosxe,cat2k,c2900, +WS-C2960C-8PC-L,iosxe,cat2k,c2900, +WS-C2960C-8TC-L,iosxe,cat2k,c2900, +WS-C2960C-8TC-S,iosxe,cat2k,c2900, +WS-C2960CG-8TC-L,iosxe,cat2k,c2900, +WS-C2960CPD-8PT-L,iosxe,cat2k,c2900, +WS-C2960CPD-8TT-L,iosxe,cat2k,c2900, +WS-C2960CX-8PC-L,iosxe,cat2k,c2900, +WS-C2960CX-8TC-L,iosxe,cat2k,c2900, +WS-C2960G-24TC-L,iosxe,cat2k,c2900, +WS-C2960G-48TC-L,iosxe,cat2k,c2900, +WS-C2960G-8TC-L,iosxe,cat2k,c2900, +WS-C2960L-16PS-LL,iosxe,cat2k,c2900, +WS-C2960L-16TS-LL,iosxe,cat2k,c2900, +WS-C2960L-24PQ-LL,iosxe,cat2k,c2900, +WS-C2960L-24PS-LL,iosxe,cat2k,c2900, +WS-C2960L-24TQ-LL,iosxe,cat2k,c2900, +WS-C2960L-24TS-LL,iosxe,cat2k,c2900, +WS-C2960L-48PQ-LL,iosxe,cat2k,c2900, +WS-C2960L-48PS-LL,iosxe,cat2k,c2900, +WS-C2960L-48TQ-LL,iosxe,cat2k,c2900, +WS-C2960L-48TS-LL,iosxe,cat2k,c2900, +WS-C2960L-8PS-LL,iosxe,cat2k,c2900, +WS-C2960L-8TS-LL,iosxe,cat2k,c2900, +WS-C2960L-SM-16PS,iosxe,cat2k,c2900, +WS-C2960L-SM-16TS,iosxe,cat2k,c2900, +WS-C2960L-SM-24PQ,iosxe,cat2k,c2900, +WS-C2960L-SM-24PS,iosxe,cat2k,c2900, +WS-C2960L-SM-24TQ,iosxe,cat2k,c2900, +WS-C2960L-SM-24TS,iosxe,cat2k,c2900, +WS-C2960L-SM-48PQ,iosxe,cat2k,c2900, +WS-C2960L-SM-48PS,iosxe,cat2k,c2900, +WS-C2960L-SM-48TQ,iosxe,cat2k,c2900, +WS-C2960L-SM-48TS,iosxe,cat2k,c2900, +WS-C2960L-SM-8PS,iosxe,cat2k,c2900, +WS-C2960L-SM-8TS,iosxe,cat2k,c2900, +WS-C2960PD-8TT-L,iosxe,cat2k,c2900, +WS-C2960R+24PC-L,iosxe,cat2k,c2900, +WS-C2960R+24PC-S,iosxe,cat2k,c2900, +WS-C2960R+24TC-L,iosxe,cat2k,c2900, +WS-C2960R+24TC-S,iosxe,cat2k,c2900, +WS-C2960R+48PST-L,iosxe,cat2k,c2900, +WS-C2960R+48PST-S,iosxe,cat2k,c2900, +WS-C2960R+48TC-L,iosxe,cat2k,c2900, +WS-C2960R+48TC-S,iosxe,cat2k,c2900, +WS-C2960RX-24PS-L,iosxe,cat2k,c2900, +WS-C2960RX-24TS-L,iosxe,cat2k,c2900, +WS-C2960RX-48FPD-L,iosxe,cat2k,c2900, +WS-C2960RX-48FPS-L,iosxe,cat2k,c2900, +WS-C2960RX-48LPD-L,iosxe,cat2k,c2900, +WS-C2960RX-48LPS-L,iosxe,cat2k,c2900, +WS-C2960RX-48TS-L,iosxe,cat2k,c2900, +WS-C2960S-24PD-L,iosxe,cat2k,c2900, +WS-C2960S-24PS-L,iosxe,cat2k,c2900, +WS-C2960S-24TD-L,iosxe,cat2k,c2900, +WS-C2960S-24TS-L,iosxe,cat2k,c2900, +WS-C2960S-24TS-S,iosxe,cat2k,c2900, +WS-C2960S-48FPD-L,iosxe,cat2k,c2900, +WS-C2960S-48FPS-L,iosxe,cat2k,c2900, +WS-C2960S-48LPD-L,iosxe,cat2k,c2900, +WS-C2960S-48LPS-L,iosxe,cat2k,c2900, +WS-C2960S-48TD-L,iosxe,cat2k,c2900, +WS-C2960S-48TS-L,iosxe,cat2k,c2900, +WS-C2960S-48TS-S,iosxe,cat2k,c2900, +WS-C2960S-F24PS-L,iosxe,cat2k,c2900, +WS-C2960S-F24TS-L,iosxe,cat2k,c2900, +WS-C2960S-F24TS-S,iosxe,cat2k,c2900, +WS-C2960S-F48FPS-L,iosxe,cat2k,c2900, +WS-C2960S-F48LPS-L,iosxe,cat2k,c2900, +WS-C2960S-F48TS-L,iosxe,cat2k,c2900, +WS-C2960S-F48TS-S,iosxe,cat2k,c2900, +WS-C2960X-24PD-L,iosxe,cat2k,c2900, +WS-C2960X-24PS-L,iosxe,cat2k,c2900, +WS-C2960X-24PSQ-L,iosxe,cat2k,c2900, +WS-C2960X-24TD-L,iosxe,cat2k,c2900, +WS-C2960X-24TS-L,iosxe,cat2k,c2900, +WS-C2960X-24TS-LL,iosxe,cat2k,c2900, +WS-C2960X-48FPD-L,iosxe,cat2k,c2900, +WS-C2960X-48FPS-L,iosxe,cat2k,c2900, +WS-C2960X-48LPD-L,iosxe,cat2k,c2900, +WS-C2960X-48LPS-L,iosxe,cat2k,c2900, +WS-C2960X-48TD-L,iosxe,cat2k,c2900, +WS-C2960X-48TS-L,iosxe,cat2k,c2900, +WS-C2960X-48TS-LL,iosxe,cat2k,c2900, +WS-C2960XR-24PD-I,iosxe,cat2k,c2900, +WS-C2960XR-24PS-I,iosxe,cat2k,c2900, +WS-C2960XR-24TD-I,iosxe,cat2k,c2900, +WS-C2960XR-24TS-I,iosxe,cat2k,c2900, +WS-C2960XR-48FPD-I,iosxe,cat2k,c2900, +WS-C2960XR-48FPS-I,iosxe,cat2k,c2900, +WS-C2960XR-48LPD-I,iosxe,cat2k,c2900, +WS-C2960XR-48LPS-I,iosxe,cat2k,c2900, +WS-C2960XR-48TD-I,iosxe,cat2k,c2900, +WS-C2960XR-48TS-I,iosxe,cat2k,c2900, +WS-C2970G-24T-E,iosxe,cat2k,c2900, +WS-C2970G-24TS-E,iosxe,cat2k,c2900, +WS-C2975GS-48PS-L,iosxe,cat2k,c2900, +WS-C2980G,iosxe,cat2k,c2900, +WS-C2980G-A,iosxe,cat2k,c2900, +WS-C3016,iosxe,cat3k,c3000, +WS-C3016A,iosxe,cat3k,c3000, +WS-C3016B,iosxe,cat3k,c3000, +WS-C3100A,iosxe,cat3k,c3100, +WS-C3100B,iosxe,cat3k,c3100, +WS-C3200A,iosxe,cat3k,c3200, +WS-C3200B,iosxe,cat3k,c3200, +WS-C3508G-XL-A,iosxe,cat3k,c3500, +WS-C3508G-XL-EN,iosxe,cat3k,c3500, +WS-C3512-XL-A,iosxe,cat3k,c3500, +WS-C3512-XL-EN,iosxe,cat3k,c3500, +WS-C3524-PWR-XL-EN,iosxe,cat3k,c3500, +WS-C3524-XL-A,iosxe,cat3k,c3500, +WS-C3524-XL-EN,iosxe,cat3k,c3500, +WS-C3548-XL-A,iosxe,cat3k,c3500, +WS-C3548-XL-EN,iosxe,cat3k,c3500, +WS-C3550-12G,iosxe,cat3k,c3500, +WS-C3550-12T,iosxe,cat3k,c3500, +WS-C3550-24-DC-SMI,iosxe,cat3k,c3500, +WS-C3550-24-EMI,iosxe,cat3k,c3500, +WS-C3550-24-FX-SMI,iosxe,cat3k,c3500, +WS-C3550-24-SMI,iosxe,cat3k,c3500, +WS-C3550-24PWR-EMI,iosxe,cat3k,c3500, +WS-C3550-24PWR-SMI,iosxe,cat3k,c3500, +WS-C3550-48-EMI,iosxe,cat3k,c3500, +WS-C3550-48-SMI,iosxe,cat3k,c3500, +WS-C3560-12PC-S,iosxe,cat3k,c3500, +WS-C3560-24PS-E,iosxe,cat3k,c3500, +WS-C3560-24PS-S,iosxe,cat3k,c3500, +WS-C3560-24TS-E,iosxe,cat3k,c3500, +WS-C3560-24TS-S,iosxe,cat3k,c3500, +WS-C3560-48PS-E,iosxe,cat3k,c3500, +WS-C3560-48PS-S,iosxe,cat3k,c3500, +WS-C3560-48TS-E,iosxe,cat3k,c3500, +WS-C3560-48TS-S,iosxe,cat3k,c3500, +WS-C3560-8PC-S,iosxe,cat3k,c3500, +WS-C3560C-12PC-S,iosxe,cat3k,c3500, +WS-C3560C-8PC-S,iosxe,cat3k,c3500, +WS-C3560CG-8PC-S,iosxe,cat3k,c3500, +WS-C3560CG-8TC-S,iosxe,cat3k,c3500, +WS-C3560CPD-8PT-S,iosxe,cat3k,c3500, +WS-C3560CX-12PC-S,iosxe,cat3k,c3500, +WS-C3560CX-12PD-S,iosxe,cat3k,c3500, +WS-C3560CX-12TC-S,iosxe,cat3k,c3500, +WS-C3560CX-8PC-S,iosxe,cat3k,c3500, +WS-C3560CX-8PT-S,iosxe,cat3k,c3500, +WS-C3560CX-8TC-S,iosxe,cat3k,c3500, +WS-C3560CX-8XPD-S,iosxe,cat3k,c3500, +WS-C3560E-12D-E,iosxe,cat3k,c3500, +WS-C3560E-12D-S,iosxe,cat3k,c3500, +WS-C3560E-12SD-E,iosxe,cat3k,c3500, +WS-C3560E-12SD-S,iosxe,cat3k,c3500, +WS-C3560E-24PD-E,iosxe,cat3k,c3500, +WS-C3560E-24PD-S,iosxe,cat3k,c3500, +WS-C3560E-24TD-E,iosxe,cat3k,c3500, +WS-C3560E-24TD-S,iosxe,cat3k,c3500, +WS-C3560E-24TD-SD,iosxe,cat3k,c3500, +WS-C3560E-48PD-E,iosxe,cat3k,c3500, +WS-C3560E-48PD-EF,iosxe,cat3k,c3500, +WS-C3560E-48PD-S,iosxe,cat3k,c3500, +WS-C3560E-48PD-SF,iosxe,cat3k,c3500, +WS-C3560E-48TD-E,iosxe,cat3k,c3500, +WS-C3560E-48TD-S,iosxe,cat3k,c3500, +WS-C3560E-48TD-SD,iosxe,cat3k,c3500, +WS-C3560G-24PS-E,iosxe,cat3k,c3500, +WS-C3560G-24PS-S,iosxe,cat3k,c3500, +WS-C3560G-24TS-E,iosxe,cat3k,c3500, +WS-C3560G-24TS-S,iosxe,cat3k,c3500, +WS-C3560G-48PS-E,iosxe,cat3k,c3500, +WS-C3560G-48PS-S,iosxe,cat3k,c3500, +WS-C3560G-48TS-E,iosxe,cat3k,c3500, +WS-C3560G-48TS-S,iosxe,cat3k,c3500, +WS-C3560V2-24PS-E,iosxe,cat3k,c3500, +WS-C3560V2-24PS-S,iosxe,cat3k,c3500, +WS-C3560V2-24TS-E,iosxe,cat3k,c3500, +WS-C3560V2-24TS-S,iosxe,cat3k,c3500, +WS-C3560V2-24TS-SD,iosxe,cat3k,c3500, +WS-C3560V2-48PS-E,iosxe,cat3k,c3500, +WS-C3560V2-48PS-S,iosxe,cat3k,c3500, +WS-C3560V2-48TS-E,iosxe,cat3k,c3500, +WS-C3560V2-48TS-S,iosxe,cat3k,c3500, +WS-C3560X-24P-E,iosxe,cat3k,c3500, +WS-C3560X-24P-L,iosxe,cat3k,c3500, +WS-C3560X-24P-S,iosxe,cat3k,c3500, +WS-C3560X-24T-E,iosxe,cat3k,c3500, +WS-C3560X-24T-L,iosxe,cat3k,c3500, +WS-C3560X-24T-S,iosxe,cat3k,c3500, +WS-C3560X-24U-E,iosxe,cat3k,c3500, +WS-C3560X-24U-L,iosxe,cat3k,c3500, +WS-C3560X-24U-S,iosxe,cat3k,c3500, +WS-C3560X-48P-E,iosxe,cat3k,c3500, +WS-C3560X-48P-L,iosxe,cat3k,c3500, +WS-C3560X-48P-S,iosxe,cat3k,c3500, +WS-C3560X-48PF-E,iosxe,cat3k,c3500, +WS-C3560X-48PF-L,iosxe,cat3k,c3500, +WS-C3560X-48PF-S,iosxe,cat3k,c3500, +WS-C3560X-48T-E,iosxe,cat3k,c3500, +WS-C3560X-48T-L,iosxe,cat3k,c3500, +WS-C3560X-48T-S,iosxe,cat3k,c3500, +WS-C3560X-48U-E,iosxe,cat3k,c3500, +WS-C3560X-48U-L,iosxe,cat3k,c3500, +WS-C3560X-48U-S,iosxe,cat3k,c3500, +WS-C3650-12X48FD-E,iosxe,cat3k,c3600, +WS-C3650-12X48FD-L,iosxe,cat3k,c3600, +WS-C3650-12X48FD-S,iosxe,cat3k,c3600, +WS-C3650-12X48UQ-E,iosxe,cat3k,c3600, +WS-C3650-12X48UQ-L,iosxe,cat3k,c3600, +WS-C3650-12X48UQ-S,iosxe,cat3k,c3600, +WS-C3650-12X48UR-E,iosxe,cat3k,c3600, +WS-C3650-12X48UR-L,iosxe,cat3k,c3600, +WS-C3650-12X48UR-S,iosxe,cat3k,c3600, +WS-C3650-12X48UZ-E,iosxe,cat3k,c3600, +WS-C3650-12X48UZ-L,iosxe,cat3k,c3600, +WS-C3650-12X48UZ-S,iosxe,cat3k,c3600, +WS-C3650-24PD,iosxe,cat3k,c3600, +WS-C3650-24PD-E,iosxe,cat3k,c3600, +WS-C3650-24PD-L,iosxe,cat3k,c3600, +WS-C3650-24PD-S,iosxe,cat3k,c3600, +WS-C3650-24PDM-E,iosxe,cat3k,c3600, +WS-C3650-24PDM-L,iosxe,cat3k,c3600, +WS-C3650-24PDM-S,iosxe,cat3k,c3600, +WS-C3650-24PS,iosxe,cat3k,c3600, +WS-C3650-24PS-E,iosxe,cat3k,c3600, +WS-C3650-24PS-L,iosxe,cat3k,c3600, +WS-C3650-24PS-S,iosxe,cat3k,c3600, +WS-C3650-24PWD-S,iosxe,cat3k,c3600, +WS-C3650-24PWS-S,iosxe,cat3k,c3600, +WS-C3650-24TD,iosxe,cat3k,c3600, +WS-C3650-24TD-E,iosxe,cat3k,c3600, +WS-C3650-24TD-L,iosxe,cat3k,c3600, +WS-C3650-24TD-S,iosxe,cat3k,c3600, +WS-C3650-24TS,iosxe,cat3k,c3600, +WS-C3650-24TS-E,iosxe,cat3k,c3600, +WS-C3650-24TS-L,iosxe,cat3k,c3600, +WS-C3650-24TS-S,iosxe,cat3k,c3600, +WS-C3650-48FD-E,iosxe,cat3k,c3600, +WS-C3650-48FD-L,iosxe,cat3k,c3600, +WS-C3650-48FD-S,iosxe,cat3k,c3600, +WS-C3650-48FQ-E,iosxe,cat3k,c3600, +WS-C3650-48FQ-L,iosxe,cat3k,c3600, +WS-C3650-48FQ-S,iosxe,cat3k,c3600, +WS-C3650-48FQM-E,iosxe,cat3k,c3600, +WS-C3650-48FQM-L,iosxe,cat3k,c3600, +WS-C3650-48FQM-S,iosxe,cat3k,c3600, +WS-C3650-48FS-E,iosxe,cat3k,c3600, +WS-C3650-48FS-L,iosxe,cat3k,c3600, +WS-C3650-48FS-S,iosxe,cat3k,c3600, +WS-C3650-48FWD-S,iosxe,cat3k,c3600, +WS-C3650-48FWS-S,iosxe,cat3k,c3600, +WS-C3650-48PD,iosxe,cat3k,c3600, +WS-C3650-48PD-E,iosxe,cat3k,c3600, +WS-C3650-48PD-L,iosxe,cat3k,c3600, +WS-C3650-48PD-S,iosxe,cat3k,c3600, +WS-C3650-48PQ,iosxe,cat3k,c3600, +WS-C3650-48PQ-E,iosxe,cat3k,c3600, +WS-C3650-48PQ-L,iosxe,cat3k,c3600, +WS-C3650-48PQ-S,iosxe,cat3k,c3600, +WS-C3650-48PS,iosxe,cat3k,c3600, +WS-C3650-48PS-E,iosxe,cat3k,c3600, +WS-C3650-48PS-L,iosxe,cat3k,c3600, +WS-C3650-48PS-S,iosxe,cat3k,c3600, +WS-C3650-48PWD-S,iosxe,cat3k,c3600, +WS-C3650-48PWS-S,iosxe,cat3k,c3600, +WS-C3650-48TD,iosxe,cat3k,c3600, +WS-C3650-48TD-E,iosxe,cat3k,c3600, +WS-C3650-48TD-L,iosxe,cat3k,c3600, +WS-C3650-48TD-S,iosxe,cat3k,c3600, +WS-C3650-48TQ,iosxe,cat3k,c3600, +WS-C3650-48TQ-E,iosxe,cat3k,c3600, +WS-C3650-48TQ-L,iosxe,cat3k,c3600, +WS-C3650-48TQ-S,iosxe,cat3k,c3600, +WS-C3650-48TS,iosxe,cat3k,c3600, +WS-C3650-48TS-E,iosxe,cat3k,c3600, +WS-C3650-48TS-L,iosxe,cat3k,c3600, +WS-C3650-48TS-S,iosxe,cat3k,c3600, +WS-C3650-8X24PD-E,iosxe,cat3k,c3600, +WS-C3650-8X24PD-L,iosxe,cat3k,c3600, +WS-C3650-8X24PD-S,iosxe,cat3k,c3600, +WS-C3650-8X24UQ-E,iosxe,cat3k,c3600, +WS-C3650-8X24UQ-L,iosxe,cat3k,c3600, +WS-C3650-8X24UQ-S,iosxe,cat3k,c3600, +WS-C3750-24FS-S,iosxe,cat3k,c3700, +WS-C3750-24PS-E,iosxe,cat3k,c3700, +WS-C3750-24PS-S,iosxe,cat3k,c3700, +WS-C3750-24TS-E,iosxe,cat3k,c3700, +WS-C3750-24TS-S,iosxe,cat3k,c3700, +WS-C3750-48PS-E,iosxe,cat3k,c3700, +WS-C3750-48PS-S,iosxe,cat3k,c3700, +WS-C3750-48TS-E,iosxe,cat3k,c3700, +WS-C3750-48TS-S,iosxe,cat3k,c3700, +WS-C3750E-24PD-E,iosxe,cat3k,c3700, +WS-C3750E-24PD-S,iosxe,cat3k,c3700, +WS-C3750E-24TD-E,iosxe,cat3k,c3700, +WS-C3750E-24TD-S,iosxe,cat3k,c3700, +WS-C3750E-24TD-SD,iosxe,cat3k,c3700, +WS-C3750E-48PD-E,iosxe,cat3k,c3700, +WS-C3750E-48PD-EF,iosxe,cat3k,c3700, +WS-C3750E-48PD-S,iosxe,cat3k,c3700, +WS-C3750E-48PD-SF,iosxe,cat3k,c3700, +WS-C3750E-48TD-E,iosxe,cat3k,c3700, +WS-C3750E-48TD-S,iosxe,cat3k,c3700, +WS-C3750E-48TD-SD,iosxe,cat3k,c3700, +WS-C3750G-12S-E,iosxe,cat3k,c3700, +WS-C3750G-12S-S,iosxe,cat3k,c3700, +WS-C3750G-12S-SD,iosxe,cat3k,c3700, +WS-C3750G-16TD-E,iosxe,cat3k,c3700, +WS-C3750G-16TD-S,iosxe,cat3k,c3700, +WS-C3750G-24PS-E,iosxe,cat3k,c3700, +WS-C3750G-24PS-S,iosxe,cat3k,c3700, +WS-C3750G-24T-E,iosxe,cat3k,c3700, +WS-C3750G-24T-S,iosxe,cat3k,c3700, +WS-C3750G-24TS-1U,ios,cat3k,c3700, +WS-C3750G-24TS-E,iosxe,cat3k,c3700, +WS-C3750G-24TS-E1U,iosxe,cat3k,c3700, +WS-C3750G-24TS-S,iosxe,cat3k,c3700, +WS-C3750G-24TS-S1U,iosxe,cat3k,c3700, +WS-C3750G-24WS-S25,iosxe,cat3k,c3700, +WS-C3750G-24WS-S50,iosxe,cat3k,c3700, +WS-C3750G-48PS-E,iosxe,cat3k,c3700, +WS-C3750G-48PS-S,iosxe,cat3k,c3700, +WS-C3750G-48TS-E,iosxe,cat3k,c3700, +WS-C3750G-48TS-S,iosxe,cat3k,c3700, +WS-C3750V2-24FS-S,iosxe,cat3k,c3700, +WS-C3750V2-24PS-E,iosxe,cat3k,c3700, +WS-C3750V2-24PS-S,iosxe,cat3k,c3700, +WS-C3750V2-24TS-E,iosxe,cat3k,c3700, +WS-C3750V2-24TS-S,iosxe,cat3k,c3700, +WS-C3750V2-48PS-E,iosxe,cat3k,c3700, +WS-C3750V2-48PS-S,iosxe,cat3k,c3700, +WS-C3750V2-48TS-E,iosxe,cat3k,c3700, +WS-C3750V2-48TS-S,iosxe,cat3k,c3700, +WS-C3750X-12S-E,iosxe,cat3k,c3700, +WS-C3750X-12S-S,iosxe,cat3k,c3700, +WS-C3750X-24P-E,iosxe,cat3k,c3700, +WS-C3750X-24P-L,iosxe,cat3k,c3700, +WS-C3750X-24P-S,iosxe,cat3k,c3700, +WS-C3750X-24S-E,iosxe,cat3k,c3700, +WS-C3750X-24S-S,iosxe,cat3k,c3700, +WS-C3750X-24T-E,iosxe,cat3k,c3700, +WS-C3750X-24T-L,iosxe,cat3k,c3700, +WS-C3750X-24T-S,iosxe,cat3k,c3700, +WS-C3750X-24U-E,iosxe,cat3k,c3700, +WS-C3750X-24U-L,iosxe,cat3k,c3700, +WS-C3750X-24U-S,iosxe,cat3k,c3700, +WS-C3750X-48P-E,iosxe,cat3k,c3700, +WS-C3750X-48P-L,iosxe,cat3k,c3700, +WS-C3750X-48P-S,iosxe,cat3k,c3700, +WS-C3750X-48PF-E,iosxe,cat3k,c3700, +WS-C3750X-48PF-L,iosxe,cat3k,c3700, +WS-C3750X-48PF-S,iosxe,cat3k,c3700, +WS-C3750X-48T-E,iosxe,cat3k,c3700, +WS-C3750X-48T-L,iosxe,cat3k,c3700, +WS-C3750X-48T-S,iosxe,cat3k,c3700, +WS-C3750X-48U-E,iosxe,cat3k,c3700, +WS-C3750X-48U-L,iosxe,cat3k,c3700, +WS-C3750X-48U-S,iosxe,cat3k,c3700, +WS-C3850-12S,iosxe,cat3k,c3800, +WS-C3850-12S-E,iosxe,cat3k,c3800, +WS-C3850-12S-S,iosxe,cat3k,c3800, +WS-C3850-12X48U-E,iosxe,cat3k,c3800, +WS-C3850-12X48U-L,iosxe,cat3k,c3800, +WS-C3850-12X48U-S,iosxe,cat3k,c3800, +WS-C3850-12X48UW-S,iosxe,cat3k,c3800, +WS-C3850-12XS-E,iosxe,cat3k,c3800, +WS-C3850-12XS-S,iosxe,cat3k,c3800, +WS-C3850-16XS-E,iosxe,cat3k,c3800, +WS-C3850-16XS-S,iosxe,cat3k,c3800, +WS-C3850-24P,iosxe,cat3k,c3800, +WS-C3850-24P-E,iosxe,cat3k,c3800, +WS-C3850-24P-L,iosxe,cat3k,c3800, +WS-C3850-24P-S,iosxe,cat3k,c3800, +WS-C3850-24PW-S,iosxe,cat3k,c3800, +WS-C3850-24S,iosxe,cat3k,c3800, +WS-C3850-24S-E,iosxe,cat3k,c3800, +WS-C3850-24S-S,iosxe,cat3k,c3800, +WS-C3850-24T,iosxe,cat3k,c3800, +WS-C3850-24T-E,iosxe,cat3k,c3800, +WS-C3850-24T-L,iosxe,cat3k,c3800, +WS-C3850-24T-S,iosxe,cat3k,c3800, +WS-C3850-24U,iosxe,cat3k,c3800, +WS-C3850-24U-E,iosxe,cat3k,c3800, +WS-C3850-24U-L,iosxe,cat3k,c3800, +WS-C3850-24U-S,iosxe,cat3k,c3800, +WS-C3850-24UW-S,iosxe,cat3k,c3800, +WS-C3850-24XS,iosxe,cat3k,c3800, +WS-C3850-24XS-E,iosxe,cat3k,c3800, +WS-C3850-24XS-S,iosxe,cat3k,c3800, +WS-C3850-24XU-E,iosxe,cat3k,c3800, +WS-C3850-24XU-L,iosxe,cat3k,c3800, +WS-C3850-24XU-S,iosxe,cat3k,c3800, +WS-C3850-24XUW-S,iosxe,cat3k,c3800, +WS-C3850-32XS-E,iosxe,cat3k,c3800, +WS-C3850-32XS-S,iosxe,cat3k,c3800, +WS-C3850-48F-E,iosxe,cat3k,c3800, +WS-C3850-48F-L,iosxe,cat3k,c3800, +WS-C3850-48F-S,iosxe,cat3k,c3800, +WS-C3850-48P,iosxe,cat3k,c3800, +WS-C3850-48P-E,iosxe,cat3k,c3800, +WS-C3850-48P-L,iosxe,cat3k,c3800, +WS-C3850-48P-S,iosxe,cat3k,c3800, +WS-C3850-48PW-S,iosxe,cat3k,c3800, +WS-C3850-48T,iosxe,cat3k,c3800, +WS-C3850-48T-E,iosxe,cat3k,c3800, +WS-C3850-48T-L,iosxe,cat3k,c3800, +WS-C3850-48T-S,iosxe,cat3k,c3800, +WS-C3850-48U,iosxe,cat3k,c3800, +WS-C3850-48U-E,iosxe,cat3k,c3800, +WS-C3850-48U-L,iosxe,cat3k,c3800, +WS-C3850-48U-S,iosxe,cat3k,c3800, +WS-C3850-48UW-S,iosxe,cat3k,c3800, +WS-C3850-48XS-E,iosxe,cat3k,c3800, +WS-C3850-48XS-F-E,iosxe,cat3k,c3800, +WS-C3850-48XS-F-S,iosxe,cat3k,c3800, +WS-C3850-48XS-S,iosxe,cat3k,c3800, +WS-C3850R-24T-E,iosxe,cat3k,c3800, +WS-C3850R-24T-L,iosxe,cat3k,c3800, +WS-C3850R-24T-S,iosxe,cat3k,c3800, +WS-C3850R-48P-E,iosxe,cat3k,c3800, +WS-C3850R-48P-L,iosxe,cat3k,c3800, +WS-C3850R-48P-S,iosxe,cat3k,c3800, +WS-C3850R-48T-E,iosxe,cat3k,c3800, +WS-C3850R-48T-L,iosxe,cat3k,c3800, +WS-C3850R-48T-S,iosxe,cat3k,c3800, +WS-C3850R-48U-E,iosxe,cat3k,c3800, +WS-C3850R-48U-L,iosxe,cat3k,c3800, +WS-C3850R-48U-S,iosxe,cat3k,c3800, +WS-C3900,iosxe,cat3k,c3900, +WS-C3920,iosxe,cat3k,c3900, +WS-C4003,iosxe,cat4k,c3900, +WS-C4006,iosxe,cat4k,c4000, +WS-C4224V-8FXS,iosxe,cat4k,c4200, +WS-C4500X-16,iosxe,cat4k,c4500, +WS-C4500X-32,iosxe,cat4k,c4500, +WS-C4503,iosxe,cat4k,c4500, +WS-C4503-E,iosxe,cat4k,c4500, +WS-C4506,iosxe,cat4k,c4500, +WS-C4506-E,iosxe,cat4k,c4500, +WS-C4507R,iosxe,cat4k,c4500, +WS-C4507R+E,iosxe,cat4k,c4500, +WS-C4507R-E,iosxe,cat4k,c4500, +WS-C4510R,iosxe,cat4k,c4500, +WS-C4510R+E,iosxe,cat4k,c4500, +WS-C4510R-E,iosxe,cat4k,c4500, +WS-C4840G,iosxe,cat4k,c4800, +WS-C4900M,iosxe,cat4k,c4900, +WS-C4908G-L3,iosxe,cat4k,c4900, +WS-C4912G,iosxe,cat4k,c4900, +WS-C4928-10GE,iosxe,cat4k,c4900, +WS-C4948,iosxe,cat4k,c4900, +WS-C4948-10GE,iosxe,cat4k,c4900, +WS-C4948E,iosxe,cat4k,c4900, +WS-C4948E-F,iosxe,cat4k,c4900, +WS-C5000,iosxe,cat5k,c5000, +WS-C5002,iosxe,cat5k,c5000, +WS-C5500,iosxe,cat5k,c5500, +WS-C5505,iosxe,cat5k,c5500, +WS-C5509,iosxe,cat5k,c5500, +WS-C6006,iosxe,cat6k,c6000, +WS-C6009,iosxe,cat6k,c6000, +WS-C6503,iosxe,cat6k,c6500, +WS-C6503-E,iosxe,cat6k,c6500, +WS-C6504-E,iosxe,cat6k,c6500, +WS-C6506,iosxe,cat6k,c6500, +WS-C6506-E,iosxe,cat6k,c6500, +WS-C6509,iosxe,cat6k,c6500, +WS-C6509-E,iosxe,cat6k,c6500, +WS-C6509-NEB,iosxe,cat6k,c6500, +WS-C6509-NEB-A,iosxe,cat6k,c6500, +WS-C6509-V-E,iosxe,cat6k,c6500, +WS-C6513,iosxe,cat6k,c6500, +WS-C6513-E,iosxe,cat6k,c6500, +WS-X3011-CH,iosxe,cat3k,c3000, diff --git a/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_cat9k.yaml b/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_cat9k.yaml index af60576a..c659096a 100644 --- a/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_cat9k.yaml +++ b/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_cat9k.yaml @@ -37,6 +37,8 @@ c9k_enable: "term width 0": "" "quick reload": new_state: c9k_enable_quick_reload + "fast reload": + new_state: c9k_enable_fast_reload "reload": new_state: c9k_reload_proceed "show startup-config": @@ -914,6 +916,8 @@ enable_c9k: new_state: c9k_exec "reload": new_state: c9k_system_config_change + "reload self-signed-certificate": + new_state: c9k_system_config_change_self_signed "active_install_add": new_state: cat9k_install_add_commit @@ -952,6 +956,46 @@ c9k_reload_proceed: - 0:,0,0.005 new_state: c9k_login4 +c9k_system_config_change_self_signed: + prompt: "System configuration has been modified. Save? [yes/no]:" + commands: + "n": + new_state: c9k_reload_proceed_self_signed + +c9k_reload_proceed_self_signed: + prompt: "Proceed with reload? [confirm]" + commands: + "": + response: file|mock_data/iosxe/cat9k_reload_logs.txt + timing: + - 0:,0,0.005 + new_state: c9k_login_self_signed + +c9k_login_self_signed: + prompt: "Username: " + commands: + "cisco": + new_state: c9k_password_self_signed + +c9k_password_self_signed: + prompt: "Password: " + commands: + "cisco": + new_state: c9k_exec_self_signed + +c9k_exec_self_signed: + preface: | + switch>Failed to generate persistent self-signed certificate. + Secure server will use temporary self-signed certificate. + prompt: "%N>" + commands: + "term length 0": "" + "term width 0": "" + "show version | include operating mode" : "" + "show install summary": "" + "enable": + new_state: enable_c9k + c9k_quick_reload_proceed: prompt: "Proceed with quick reload? [confirm]" commands: @@ -1115,7 +1159,8 @@ grub_execute: MANUAL_BOOT=yes "boot": new_state: cat9k_rommon_boot - + "": + new_state: c9k_login4 # ================================ # Login sequence for login_creds @@ -1275,3 +1320,18 @@ c9k_password8_fallback: commands: "fallback_pass": new_state: c9k_exec + +c9k_enable_fast_reload: + commands: + <<: *c9k_enable_cmds + "reload": + new_state: c9k_fast_reload_proceed + +c9k_fast_reload_proceed: + prompt: "Proceed with fast reload? [confirm]" + commands: + "": + response: file|mock_data/iosxe/cat9k_reload_logs.txt + timing: + - 0:,0,0.005 + new_state: c9k_login4 diff --git a/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_data_c8kv.yaml b/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_data_c8kv.yaml index beca3a77..aac10fdd 100644 --- a/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_data_c8kv.yaml +++ b/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_data_c8kv.yaml @@ -91,6 +91,8 @@ c8kv_config_term: new_state: 'c8kv_enable' 'config-register 0x40': new_state: 'c8kv_config_term_autoboot_disabled' + 'config-register 0x2102': "" + c8kv_config_term_autoboot_disabled: prompt: "%N(config)#" @@ -113,6 +115,9 @@ c8kv_reload_proceed: c8kv_grub_menu: preface: file|mock_data/iosxe/cat8kv_grub_menu.txt prompt: "" + keys: + ctrl-\\[: + new_state: 'c8kv_grub_menu' commands: '': new_state: 'c8kv_grub_boot_image' @@ -245,6 +250,10 @@ c8kv_exec: c8kv_rommon: prompt: "grub>" + keys: + 'ctrl-\[': # 'escape' character + new_state: 'c8kv_grub_menu' commands: + '': 'blah' 'boot': - new_state: 'c8kv_enable' \ No newline at end of file + new_state: 'c8kv_enable' diff --git a/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_data_ewlc.yaml b/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_data_ewlc.yaml index 18310d51..9ff1db84 100644 --- a/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_data_ewlc.yaml +++ b/src/unicon/plugins/tests/mock_data/iosxe/iosxe_mock_data_ewlc.yaml @@ -130,6 +130,10 @@ ewlc_config: new_state: ewlc_wlan_shutdown_confirm response: |2 Warning! All WLANs will be disabled. + "ap lsc-provision": + new_state: ewlc_lsc_provision_confirm + response: |2 + In Non-WLANCC mode APs will be provisioning with RSA certificates with specified key-size configuration. In WLANCC mode APs will be provisioning with EC certificates with a 384 bit key. "end": new_state: ewlc_enable @@ -139,6 +143,12 @@ ewlc_wlan_shutdown_confirm: "y": new_state: ewlc_config +ewlc_lsc_provision_confirm: + prompt: "Are you sure you want to continue? (y/n):" + commands: + "y": + new_state: ewlc_config + ewlc_config_line: prompt: "%N(config-line)#" commands: diff --git a/src/unicon/plugins/tests/mock_data/nxos/nxos_mock_data.yaml b/src/unicon/plugins/tests/mock_data/nxos/nxos_mock_data.yaml index c539423c..13334dae 100644 --- a/src/unicon/plugins/tests/mock_data/nxos/nxos_mock_data.yaml +++ b/src/unicon/plugins/tests/mock_data/nxos/nxos_mock_data.yaml @@ -618,7 +618,9 @@ nxos_l2rib_pycl_prompt_delay_custom: new_state: bash console_escape: - preface: "Escape character is ~,'" + preface: | + Escape character is '~,' + press ~, to exit prompt: "" commands: "": diff --git a/src/unicon/plugins/tests/mock_data/nxos/nxos_mock_n9k.yaml b/src/unicon/plugins/tests/mock_data/nxos/nxos_mock_n9k.yaml index b4f84874..1c24f36e 100644 --- a/src/unicon/plugins/tests/mock_data/nxos/nxos_mock_n9k.yaml +++ b/src/unicon/plugins/tests/mock_data/nxos/nxos_mock_n9k.yaml @@ -12,8 +12,7 @@ n9k_exec2: "term length 0": "" "term width 511": "" "terminal session-timeout 0": "" - "run bash rlogin lc1": - prompt: "module-1#" + "run bash sudo rlogin lc1": new_state: n9k_module_console "config term": new_state: n9k_config2 @@ -497,7 +496,7 @@ n9k_boot_shell: new_state: n9k_boot n9k_module_console: - prompt: "module-1#" + prompt: "root@lc1:~#" commands: "show version": response: | diff --git a/src/unicon/plugins/tests/test_plugin_cheetah_ap.py b/src/unicon/plugins/tests/test_plugin_cheetah_ap.py index 1fa30f9e..b51ebbb2 100644 --- a/src/unicon/plugins/tests/test_plugin_cheetah_ap.py +++ b/src/unicon/plugins/tests/test_plugin_cheetah_ap.py @@ -2,6 +2,7 @@ import unicon from unicon import Connection +from unicon.plugins.cheetah.ap.patterns import CheetahAPPatterns unicon.settings.Settings.POST_DISCONNECT_WAIT_SEC = 0 unicon.settings.Settings.GRACEFUL_DISCONNECT_WAIT_SEC = 0.2 @@ -39,6 +40,12 @@ def test_execute_with_more(self): self.assertEqual(output, 'first\r\n\r\nsecond\r\n\r\nthird') self.assertEqual(repr(output), repr('first\r\n\r\nsecond\r\n\r\nthird')) + def test_ap_shell_prompt_matches_home_directory(self): + patterns = CheetahAPPatterns() + + self.assertRegex('AP2C57:~#', patterns.ap_shell_prompt) + self.assertRegex('AP2C57:/logs#', patterns.ap_shell_prompt) + # class TestCheetanApReloadService(unittest.TestCase): def test_reload(self): diff --git a/src/unicon/plugins/tests/test_plugin_generic.py b/src/unicon/plugins/tests/test_plugin_generic.py index 33310c2f..2ea262f0 100644 --- a/src/unicon/plugins/tests/test_plugin_generic.py +++ b/src/unicon/plugins/tests/test_plugin_generic.py @@ -23,6 +23,7 @@ from unicon.plugins.utils import sanitize from unicon.plugins.tests.mock.mock_device_ios import MockDeviceTcpWrapperIOS from unicon.mock.mock_device import MockDevice, MockDeviceTcpWrapper +from unicon.plugins.generic.service_implementation import Enable as GenericEnable from unicon.plugins.generic.statements import login_handler, password_handler, passphrase_handler from unicon.plugins.generic.statemachine import config_transition from pyats.topology import loader @@ -38,6 +39,29 @@ unicon.settings.Settings.GRACEFUL_DISCONNECT_WAIT_SEC=0.2 +class TestGenericEnable(unittest.TestCase): + + def test_enable_passes_prompt_recovery_to_state_machine(self): + d = Connection(hostname='Router', + start=['mock_device_cli --os ios'], + os='ios', + prompt_recovery=True) + d.spawn = Mock() + d.state_machine = Mock() + d.state_machine.go_to = Mock() + + enable = GenericEnable(d, d.context) + enable.pre_service() + enable.call_service() + + d.state_machine.go_to.assert_called_once_with( + 'enable', + d.spawn, + context=d.context, + timeout=d.settings.ENABLE_TIMEOUT, + prompt_recovery=True) + + class TestPasswordHandler(unittest.TestCase): def setUp(self): diff --git a/src/unicon/plugins/tests/test_plugin_iosxe.py b/src/unicon/plugins/tests/test_plugin_iosxe.py index aeb2dbe4..e8e64c42 100644 --- a/src/unicon/plugins/tests/test_plugin_iosxe.py +++ b/src/unicon/plugins/tests/test_plugin_iosxe.py @@ -987,47 +987,6 @@ def test_config_transaction_sdwan_iosxe_confirm(self): d.configure('no logging console') d.disconnect() -class TestIosXEC8KVPlugin(unittest.TestCase): - def test_connect(self): - d = Connection(hostname="switch", - start=["mock_device_cli --os iosxe --state c8kv_rommon --hostname switch"], - os="iosxe", - platform="cat8k", - log_buffer=True) - d.connect() - d.disconnect() - -class TestIosXEC8KvPluginReload(unittest.TestCase): - @classmethod - def setUpClass(cls): - cls.c = Connection( - hostname='switch', - start=['mock_device_cli --os iosxe --state c8kv_exec --hostname switch'], - os='iosxe', - platform='c8kv', - credentials=dict(default=dict( - username='cisco', password='cisco'), - alt=dict( - username='admin', password='lab')), - log_buffer=True - ) - cls.c.connect() - - @classmethod - def tearDownClass(cls): - cls.c.disconnect() - - def test_reload(self): - self.c.settings.POST_RELOAD_WAIT = 1 - self.c.reload(grub_boot_image='GOLDEN') - - def test_golden_image(self): - self.c.settings.POST_RELOAD_WAIT = 1 - self.c.reload(grub_boot_image='GOLDEN IMAGE') - - def test_rommon(self): - self.c.rommon(config_register="0x40") - class TestIosXECat9kPluginReload(unittest.TestCase): @classmethod diff --git a/src/unicon/plugins/tests/test_plugin_iosxe_c8kv.py b/src/unicon/plugins/tests/test_plugin_iosxe_c8kv.py new file mode 100644 index 00000000..b57df164 --- /dev/null +++ b/src/unicon/plugins/tests/test_plugin_iosxe_c8kv.py @@ -0,0 +1,185 @@ +#!/usr/bin/env python3 + +import os +import re +import unittest +from unittest.mock import Mock + +import unicon +from unicon import Connection + +unicon.settings.Settings.POST_DISCONNECT_WAIT_SEC = 0 +unicon.settings.Settings.GRACEFUL_DISCONNECT_WAIT_SEC = 0.2 + + +class TestIosXEC8KVPlugin(unittest.TestCase): + def test_connect_from_rommon(self): + """Test connection from c8kv_rommon state (GRUB prompt)""" + d = Connection(hostname="switch", + start=["mock_device_cli --os iosxe --state c8kv_rommon --hostname switch"], + os="iosxe", + platform="cat8k", + log_buffer=True) + d.connect() + self.assertEqual(d.state_machine.current_state, 'enable') + d.disconnect() + + def test_connect_from_exec(self): + """Test connection from c8kv_exec state""" + d = Connection(hostname="switch", + start=["mock_device_cli --os iosxe --state c8kv_exec --hostname switch"], + os="iosxe", + platform="c8kv", + log_buffer=True) + d.connect() + self.assertEqual(d.state_machine.current_state, 'enable') + d.disconnect() + + def test_grub_prompt_recognition(self): + """Test that GRUB prompt (grub>) is recognized as rommon state""" + d = Connection(hostname="switch", + start=["mock_device_cli --os iosxe --state c8kv_rommon --hostname switch"], + os="iosxe", + platform="cat8k", + log_buffer=True) + # Should start in rommon state due to grub> prompt + d.connect() + # After boot, should transition to enable state + self.assertEqual(d.state_machine.current_state, 'enable') + d.disconnect() + + +class TestIosXEC8KvPluginReload(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.c = Connection( + hostname='switch', + start=['mock_device_cli --os iosxe --state c8kv_exec --hostname switch'], + os='iosxe', + platform='c8kv', + credentials=dict(default=dict( + username='cisco', password='cisco'), + alt=dict( + username='admin', password='lab')), + log_buffer=True, + ) + cls.c.connect() + + @classmethod + def tearDownClass(cls): + cls.c.disconnect() + + def test_reload_with_golden_image(self): + """Test reload with GOLDEN grub_boot_image""" + self.c.settings.POST_RELOAD_WAIT = 1 + self.c.reload(grub_boot_image='GOLDEN') + # Verify device comes back online + self.assertEqual(self.c.state_machine.current_state, 'enable') + + def test_reload_with_golden_image_phrase(self): + """Test reload with 'GOLDEN IMAGE' grub_boot_image""" + self.c.settings.POST_RELOAD_WAIT = 1 + self.c.reload(grub_boot_image='GOLDEN IMAGE') + # Verify device comes back online + self.assertEqual(self.c.state_machine.current_state, 'enable') + + def test_reload_without_grub_image(self): + """Test reload without specifying grub_boot_image (should use default)""" + self.c.settings.POST_RELOAD_WAIT = 1 + self.c.reload() + # Verify device comes back online with default boot + self.assertEqual(self.c.state_machine.current_state, 'enable') + + def test_reload_to_rommon_transition(self): + """Test that reload can transition through rommon state""" + # Set autoboot disabled to go through rommon + self.c.configure('config-register 0x40') + self.c.settings.POST_RELOAD_WAIT = 1 + # This should go through rommon (grub>) state before reaching enable + self.c.reload(grub_boot_image='GOLDEN', timeout=10) + # Should end up in enable state after boot + self.assertEqual(self.c.state_machine.current_state, 'enable') + # Restore autoboot + self.c.configure('config-register 0x2102') + + def test_rommon(self): + """Test rommon functionality with config register""" + self.c.rommon(config_register="0x40") + + +class TestIosXEC8KvPluginStateMachine(unittest.TestCase): + """Test C8KV-specific state machine behavior""" + + def setUp(self): + self.c = Connection( + hostname='switch', + start=['mock_device_cli --os iosxe --state c8kv_exec --hostname switch'], + os='iosxe', + platform='c8kv', + log_buffer=True + ) + self.c.connect() + + def tearDown(self): + self.c.disconnect() + + def test_statemachine_has_rommon_state(self): + """Test that C8KV statemachine includes rommon state""" + sm = self.c.state_machine + self.assertIsNotNone(sm.get_state('rommon')) + + def test_rommon_state_pattern(self): + """Test that rommon state uses generic pattern for GRUB support""" + sm = self.c.state_machine + rommon_state = sm.get_state('rommon') + # Should use generic patterns that include grub> prompt + self.assertIsNotNone(rommon_state.pattern) + + def test_rommon_to_disable_path_exists(self): + """Test that custom rommon->disable path exists""" + sm = self.c.state_machine + path = sm.get_path('rommon', 'disable') + self.assertIsNotNone(path, "No rommon->disable path found") + + +class TestIosXEC8KvPluginBootStatements(unittest.TestCase): + """Test C8KV boot statement functionality""" + + def test_boot_context_handling(self): + """Test that boot statements handle context properly""" + from unicon.plugins.iosxe.c8kv.statements import boot_from_rommon + from unittest.mock import Mock, MagicMock + + # Mock objects + statemachine = Mock() + spawn = Mock() + + # Test with grub_boot_image specified + context = {'grub_boot_image': 'GOLDEN'} + boot_from_rommon(statemachine, spawn, context) + + # Verify escape character was sent + spawn.send.assert_called_with('\x1b') + # Verify context was updated with boot timing + self.assertIn('boot_start_time', context) + self.assertIn('boot_prompt_count', context) + + def test_boot_without_grub_image(self): + """Test boot statements without grub_boot_image""" + from unicon.plugins.iosxe.c8kv.statements import boot_from_rommon + from unittest.mock import Mock + + statemachine = Mock() + spawn = Mock() + context = {} # No grub_boot_image specified + + boot_from_rommon(statemachine, spawn, context) + + # Should still send escape and update context + spawn.send.assert_called_with('\x1b') + self.assertIn('boot_start_time', context) + self.assertEqual(context['boot_prompt_count'], 1) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/src/unicon/plugins/tests/test_plugin_iosxe_cat3k_ewlc.py b/src/unicon/plugins/tests/test_plugin_iosxe_cat3k_ewlc.py index 7fdb94b7..7d286c2b 100644 --- a/src/unicon/plugins/tests/test_plugin_iosxe_cat3k_ewlc.py +++ b/src/unicon/plugins/tests/test_plugin_iosxe_cat3k_ewlc.py @@ -68,6 +68,29 @@ def test_config_with_prompt(self): self.d.configure("wlan shutdown") +class TestIosXECat3kEwlcApLscProvision(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls.d = Connection(hostname='Router', + start=['mock_device_cli --os iosxe --state ewlc_enable'], + os='iosxe', + platform='cat3k', + model='ewlc', + username='cisco', + tacacs_password='cisco') + cls.d.connect() + + @classmethod + @patch.object(unicon.settings.Settings, 'POST_DISCONNECT_WAIT_SEC', 0) + @patch.object(unicon.settings.Settings, 'GRACEFUL_DISCONNECT_WAIT_SEC', 0.2) + def tearDownClass(cls): + cls.d.disconnect() + + def test_config_ap_lsc_provision_no_default_yn(self): + self.d.configure("ap lsc-provision") + + class TestIosXECat3kEwlcStandbyReload(unittest.TestCase): @classmethod diff --git a/src/unicon/plugins/tests/test_plugin_iosxe_cat9k.py b/src/unicon/plugins/tests/test_plugin_iosxe_cat9k.py index 32242a15..248cd12e 100644 --- a/src/unicon/plugins/tests/test_plugin_iosxe_cat9k.py +++ b/src/unicon/plugins/tests/test_plugin_iosxe_cat9k.py @@ -613,6 +613,50 @@ def test_reload(self): c.disconnect() md.stop() + def test_reload_fast_reload_confirm(self): + md = MockDeviceTcpWrapperIOSXE(port=0, state='c9k_enable') + md.start() + + c = Connection( + hostname='switch', + start=['telnet 127.0.0.1 {}'.format(md.ports[0])], + os='iosxe', + platform='cat9k', + settings=dict(POST_DISCONNECT_WAIT_SEC=0, GRACEFUL_DISCONNECT_WAIT_SEC=0.2), + credentials=dict(default=dict(username='cisco', password='cisco'), + alt=dict(username='admin', password='lab')), + mit=True + ) + try: + c.connect() + c.settings.POST_RELOAD_WAIT = 1 + c.execute('fast reload') + c.reload(timeout=10) + self.assertEqual(c.state_machine.current_state, 'enable') + finally: + c.disconnect() + md.stop() + + def test_reload_with_self_signed_certificate_warning(self): + c = Connection( + hostname='switch', + start=['mock_device_cli --os iosxe --state c9k_login4 --hostname switch'], + os='iosxe', + platform='cat9k', + settings=dict(POST_DISCONNECT_WAIT_SEC=0, GRACEFUL_DISCONNECT_WAIT_SEC=0.2), + credentials=dict(default=dict(username='cisco', password='cisco'), + alt=dict(username='admin', password='lab')), + mit=True + ) + try: + c.connect() + c.settings.POST_RELOAD_WAIT = 1 + c.reload(reload_command='reload self-signed-certificate') + self.assertEqual(c.state_machine.current_state, 'enable') + finally: + if c.connected: + c.disconnect() + def test_reload_with_error_pattern(self): md = MockDeviceTcpWrapperIOSXE(port=0, state='c9k_login4') md.start() diff --git a/src/unicon/plugins/tests/test_plugin_iosxe_stack.py b/src/unicon/plugins/tests/test_plugin_iosxe_stack.py index b1cbcefc..2797f375 100644 --- a/src/unicon/plugins/tests/test_plugin_iosxe_stack.py +++ b/src/unicon/plugins/tests/test_plugin_iosxe_stack.py @@ -442,44 +442,23 @@ def test_stack_rommon_mixed_states(self): stack=True) md.start() try: - d = Connection(hostname='Router', + con = Connection(hostname='Router', start=['telnet 127.0.0.1 ' + str(i) for i in md.ports[:]], os='iosxe', chassis_type='stack', username='cisco', tacacs_password='cisco', enable_password='cisco', - log_buffer=True) - d.settings.STACK_ROMMON_SLEEP = 1 - d.settings.STACK_BOOT_TIMEOUT = 200 - d.connect() - - # Mock the log to capture messages - with patch.object(d.log, 'info') as mock_log_info, \ - patch.object(d.log, 'warning') as mock_log_warning: - - # Execute rommon service which should trigger mixed state handling - try: - d.rommon('dir flash:', timeout=20) - except Exception: - # May fail in mock environment but we're testing the pre_service logic - pass - - # Verify that mixed state detection was logged - log_messages = [call[0][0] for call in mock_log_info.call_args_list] - - # Check for key log messages that indicate mixed state handling - self.assertTrue( - any('Waiting for all consoles to reach rommon state' in str(msg) for msg in log_messages), - "Expected 'Waiting for all consoles to reach rommon state' log message" - ) - - self.assertTrue( - any('Sync in progress' in str(msg) for msg in log_messages), - "Expected 'Sync in progress' log message indicating synchronization" - ) - - d.disconnect() + log_buffer=True, + debug=True) + con.settings.STACK_ROMMON_SLEEP = 1 + con.settings.STACK_BOOT_TIMEOUT = 200 + con.connect() + con.rommon(timeout=20) + for subcon in con.subconnections: + self.assertEqual(subcon.state_machine.current_state, 'rommon') + + con.disconnect() finally: md.stop() diff --git a/src/unicon/plugins/tests/test_plugin_iosxr.py b/src/unicon/plugins/tests/test_plugin_iosxr.py index 0840f2c9..53f28d55 100644 --- a/src/unicon/plugins/tests/test_plugin_iosxr.py +++ b/src/unicon/plugins/tests/test_plugin_iosxr.py @@ -207,6 +207,26 @@ def test_execute_show_context(self): finally: md.stop() + def test_execute_avoid_state_detection_does_not_persist(self): + md = MockDeviceTcpWrapperIOSXR(port=0, state='enable') + md.start() + conn = Connection(hostname='Router', + start=['telnet 127.0.0.1 {}'.format(md.ports[0])], + os='iosxr', + username='admin', + tacacs_password='admin') + + try: + conn.connect() + conn.execute('show context') + conn.execute('run', allow_state_change=True, timeout=5) + self.assertEqual(conn.state_machine.current_state, 'run') + conn.execute('exit', allow_state_change=True, timeout=5) + self.assertEqual(conn.state_machine.current_state, 'enable') + finally: + conn.disconnect() + md.stop() + class TestIosXrPluginPrompts(unittest.TestCase): """Tests for prompt handling."""