tdl-xoa-driver 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tdl_xoa_driver-1.0.0.dist-info/LICENSE +202 -0
- tdl_xoa_driver-1.0.0.dist-info/METADATA +177 -0
- tdl_xoa_driver-1.0.0.dist-info/RECORD +325 -0
- tdl_xoa_driver-1.0.0.dist-info/WHEEL +5 -0
- tdl_xoa_driver-1.0.0.dist-info/top_level.txt +1 -0
- xoa_driver/__init__.py +2 -0
- xoa_driver/enums.py +399 -0
- xoa_driver/exceptions.py +77 -0
- xoa_driver/functions/__init__.py +0 -0
- xoa_driver/functions/anlt.py +744 -0
- xoa_driver/functions/anlt_ll_debug.py +429 -0
- xoa_driver/functions/cli.py +581 -0
- xoa_driver/functions/exceptions.py +72 -0
- xoa_driver/functions/headers.py +608 -0
- xoa_driver/functions/mgmt.py +515 -0
- xoa_driver/functions/tools.py +256 -0
- xoa_driver/hlfuncs.py +18 -0
- xoa_driver/internals/__init__.py +0 -0
- xoa_driver/internals/commands/__init__.py +31 -0
- xoa_driver/internals/commands/c_commands.py +2041 -0
- xoa_driver/internals/commands/enums.py +3289 -0
- xoa_driver/internals/commands/m4_commands.py +700 -0
- xoa_driver/internals/commands/m4e_commands.py +107 -0
- xoa_driver/internals/commands/m_commands.py +1875 -0
- xoa_driver/internals/commands/p4_commands.py +2221 -0
- xoa_driver/internals/commands/p4e_commands.py +160 -0
- xoa_driver/internals/commands/p4g_commands.py +7253 -0
- xoa_driver/internals/commands/p_commands.py +6000 -0
- xoa_driver/internals/commands/pc_commands.py +335 -0
- xoa_driver/internals/commands/pd_commands.py +355 -0
- xoa_driver/internals/commands/pe_commands.py +1018 -0
- xoa_driver/internals/commands/pec_commands.py +265 -0
- xoa_driver/internals/commands/ped_commands.py +1034 -0
- xoa_driver/internals/commands/pef_commands.py +2216 -0
- xoa_driver/internals/commands/pf_commands.py +379 -0
- xoa_driver/internals/commands/pl1_commands.py +1588 -0
- xoa_driver/internals/commands/pl_commands.py +178 -0
- xoa_driver/internals/commands/pm_commands.py +256 -0
- xoa_driver/internals/commands/pp_commands.py +2341 -0
- xoa_driver/internals/commands/pr_commands.py +812 -0
- xoa_driver/internals/commands/ps_commands.py +2311 -0
- xoa_driver/internals/commands/pt_commands.py +370 -0
- xoa_driver/internals/commands/px_commands.py +303 -0
- xoa_driver/internals/commands/subtypes.py +86 -0
- xoa_driver/internals/core/__init__.py +0 -0
- xoa_driver/internals/core/builders.py +39 -0
- xoa_driver/internals/core/exceptions.py +69 -0
- xoa_driver/internals/core/funcs.py +81 -0
- xoa_driver/internals/core/funcs.pyi +1072 -0
- xoa_driver/internals/core/interfaces.py +47 -0
- xoa_driver/internals/core/token.py +44 -0
- xoa_driver/internals/core/transporter/__init__.py +0 -0
- xoa_driver/internals/core/transporter/_processor.py +83 -0
- xoa_driver/internals/core/transporter/_publisher.py +101 -0
- xoa_driver/internals/core/transporter/_request_id_counter.py +28 -0
- xoa_driver/internals/core/transporter/_stream.py +99 -0
- xoa_driver/internals/core/transporter/_typings.py +43 -0
- xoa_driver/internals/core/transporter/exceptions.py +44 -0
- xoa_driver/internals/core/transporter/handler.py +127 -0
- xoa_driver/internals/core/transporter/logger/__init__.py +10 -0
- xoa_driver/internals/core/transporter/logger/__logger.py +94 -0
- xoa_driver/internals/core/transporter/logger/__state_off.py +32 -0
- xoa_driver/internals/core/transporter/logger/__state_on_default.py +70 -0
- xoa_driver/internals/core/transporter/logger/__state_on_loguru.py +51 -0
- xoa_driver/internals/core/transporter/logger/__state_on_user.py +48 -0
- xoa_driver/internals/core/transporter/protocol/__init__.py +0 -0
- xoa_driver/internals/core/transporter/protocol/_constants.py +77 -0
- xoa_driver/internals/core/transporter/protocol/_utils.py +59 -0
- xoa_driver/internals/core/transporter/protocol/exceptions.py +271 -0
- xoa_driver/internals/core/transporter/protocol/payload/__init__.py +70 -0
- xoa_driver/internals/core/transporter/protocol/payload/base_struct.py +283 -0
- xoa_driver/internals/core/transporter/protocol/payload/descriptor.py +119 -0
- xoa_driver/internals/core/transporter/protocol/payload/exceptions.py +20 -0
- xoa_driver/internals/core/transporter/protocol/payload/field.py +296 -0
- xoa_driver/internals/core/transporter/protocol/payload/types.py +173 -0
- xoa_driver/internals/core/transporter/protocol/payload/utils.py +53 -0
- xoa_driver/internals/core/transporter/protocol/struct_header.py +123 -0
- xoa_driver/internals/core/transporter/protocol/struct_request.py +65 -0
- xoa_driver/internals/core/transporter/protocol/struct_response.py +89 -0
- xoa_driver/internals/core/transporter/registry.py +43 -0
- xoa_driver/internals/exceptions/__init__.py +9 -0
- xoa_driver/internals/exceptions/modules.py +13 -0
- xoa_driver/internals/exceptions/testers.py +21 -0
- xoa_driver/internals/hli_v1/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/base_index.py +39 -0
- xoa_driver/internals/hli_v1/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/connection_group/cg.py +186 -0
- xoa_driver/internals/hli_v1/indices/connection_group/histogram.py +78 -0
- xoa_driver/internals/hli_v1/indices/connection_group/l2.py +94 -0
- xoa_driver/internals/hli_v1/indices/connection_group/l3.py +130 -0
- xoa_driver/internals/hli_v1/indices/connection_group/raw.py +200 -0
- xoa_driver/internals/hli_v1/indices/connection_group/replay.py +109 -0
- xoa_driver/internals/hli_v1/indices/connection_group/tcp.py +314 -0
- xoa_driver/internals/hli_v1/indices/connection_group/tls.py +198 -0
- xoa_driver/internals/hli_v1/indices/connection_group/udp.py +133 -0
- xoa_driver/internals/hli_v1/indices/connection_group/user_state.py +28 -0
- xoa_driver/internals/hli_v1/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/filter/base_filter.py +65 -0
- xoa_driver/internals/hli_v1/indices/filter/genuine_filter.py +20 -0
- xoa_driver/internals/hli_v1/indices/length_term.py +49 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/base_macsecsc.py +224 -0
- xoa_driver/internals/hli_v1/indices/macsecscs/genuine_macsecsc.py +72 -0
- xoa_driver/internals/hli_v1/indices/match_term.py +64 -0
- xoa_driver/internals/hli_v1/indices/port_dataset.py +72 -0
- xoa_driver/internals/hli_v1/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v1/indices/streams/base_stream.py +405 -0
- xoa_driver/internals/hli_v1/indices/streams/genuine_stream.py +64 -0
- xoa_driver/internals/hli_v1/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v1/modules/__interfaces.py +21 -0
- xoa_driver/internals/hli_v1/modules/base_module.py +138 -0
- xoa_driver/internals/hli_v1/modules/module_chimera.py +366 -0
- xoa_driver/internals/hli_v1/modules/module_l23ve.py +73 -0
- xoa_driver/internals/hli_v1/modules/module_l47.py +397 -0
- xoa_driver/internals/hli_v1/modules/module_l47ve.py +9 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_combi.py +83 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_d.py +75 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_e.py +85 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_f.py +145 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_g.py +84 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_h.py +40 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_i.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_j.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_k.py +39 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_l.py +55 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_l1.py +800 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_m.py +25 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/family_n.py +40 -0
- xoa_driver/internals/hli_v1/modules/modules_l23/module_l23_base.py +383 -0
- xoa_driver/internals/hli_v1/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/base_port.py +125 -0
- xoa_driver/internals/hli_v1/ports/port_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_capture.py +70 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23.py +527 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_l23_genuine.py +229 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_reception_statistics.py +231 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transceiver.py +117 -0
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transmission_statistics.py +131 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/general.py +396 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/shadow.py +104 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/filter_definition/working.py +36 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_custom_distribution.py +125 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/pe_distribution.py +174 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_chimera.py +119 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/port_emulation.py +244 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/reception_statistics.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/chimera/transmission_statistics.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_combi.py +37 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_d.py +51 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_e.py +107 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_f.py +151 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_g.py +77 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_h.py +67 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_i.py +84 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_j.py +68 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_k.py +73 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_l.py +82 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_l1.py +166 -0
- xoa_driver/internals/hli_v1/ports/port_l23/family_m.py +29 -0
- xoa_driver/internals/hli_v1/ports/port_l23/fault_jkl.py +24 -0
- xoa_driver/internals/hli_v1/ports/port_l23/freya_l1.py +722 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ghijkl.py +369 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_ijkl_chimera.py +60 -0
- xoa_driver/internals/hli_v1/ports/port_l23/pcs_pma_l.py +78 -0
- xoa_driver/internals/hli_v1/ports/port_l23/port_l23ve.py +101 -0
- xoa_driver/internals/hli_v1/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v1/ports/port_l47/counters.py +174 -0
- xoa_driver/internals/hli_v1/ports/port_l47/main.py +228 -0
- xoa_driver/internals/hli_v1/ports/port_l47/packet_engine.py +31 -0
- xoa_driver/internals/hli_v1/revisions.py +11 -0
- xoa_driver/internals/hli_v1/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/_base_tester.py +259 -0
- xoa_driver/internals/hli_v1/testers/genuine/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/__init__.py +0 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/health.py +16 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/rest_api.py +38 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/time_keeper.py +57 -0
- xoa_driver/internals/hli_v1/testers/genuine/l_23/upload_file.py +29 -0
- xoa_driver/internals/hli_v1/testers/genuine/management_interface.py +42 -0
- xoa_driver/internals/hli_v1/testers/l23_tester.py +196 -0
- xoa_driver/internals/hli_v1/testers/l23ve_tester.py +114 -0
- xoa_driver/internals/hli_v1/testers/l47_tester.py +106 -0
- xoa_driver/internals/hli_v1/testers/l47ve_tester.py +54 -0
- xoa_driver/internals/hli_v2/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/base_index.py +39 -0
- xoa_driver/internals/hli_v2/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/connection_group/cg.py +115 -0
- xoa_driver/internals/hli_v2/indices/connection_group/histogram.py +59 -0
- xoa_driver/internals/hli_v2/indices/connection_group/l2.py +71 -0
- xoa_driver/internals/hli_v2/indices/connection_group/l3.py +96 -0
- xoa_driver/internals/hli_v2/indices/connection_group/raw.py +148 -0
- xoa_driver/internals/hli_v2/indices/connection_group/replay.py +89 -0
- xoa_driver/internals/hli_v2/indices/connection_group/tcp.py +261 -0
- xoa_driver/internals/hli_v2/indices/connection_group/tls.py +166 -0
- xoa_driver/internals/hli_v2/indices/connection_group/udp.py +112 -0
- xoa_driver/internals/hli_v2/indices/connection_group/user_state.py +25 -0
- xoa_driver/internals/hli_v2/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/filter/base_filter.py +50 -0
- xoa_driver/internals/hli_v2/indices/filter/genuine_filter.py +17 -0
- xoa_driver/internals/hli_v2/indices/length_term.py +44 -0
- xoa_driver/internals/hli_v2/indices/match_term.py +49 -0
- xoa_driver/internals/hli_v2/indices/port_dataset.py +53 -0
- xoa_driver/internals/hli_v2/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/streams/base_stream.py +234 -0
- xoa_driver/internals/hli_v2/indices/streams/genuine_stream.py +32 -0
- xoa_driver/internals/hli_v2/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/__interfaces.py +21 -0
- xoa_driver/internals/hli_v2/modules/base_module.py +125 -0
- xoa_driver/internals/hli_v2/modules/module_chimera.py +358 -0
- xoa_driver/internals/hli_v2/modules/module_l23ve.py +58 -0
- xoa_driver/internals/hli_v2/modules/module_l47.py +230 -0
- xoa_driver/internals/hli_v2/modules/module_l47ve.py +8 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_combi.py +73 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_d.py +75 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_e.py +85 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_f.py +144 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_g.py +84 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_h.py +40 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_i.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_j.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_k.py +39 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l.py +55 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l1.py +797 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_m.py +25 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_n.py +40 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/module_l23_base.py +339 -0
- xoa_driver/internals/hli_v2/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/base_port.py +105 -0
- xoa_driver/internals/hli_v2/ports/port_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_capture.py +64 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23.py +441 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23_genuine.py +172 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +156 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transceiver.py +117 -0
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transmission_statistics.py +59 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/_utils.py +15 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/general.py +340 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/shadow.py +99 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/working.py +36 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +116 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_distribution.py +102 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_chimera.py +113 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_emulation.py +420 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/reception_statistics.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/transmission_statistics.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_combi.py +36 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_d.py +49 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_e.py +96 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_f.py +144 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_g.py +77 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_h.py +60 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_i.py +66 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_j.py +53 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_k.py +58 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_l.py +67 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +149 -0
- xoa_driver/internals/hli_v2/ports/port_l23/family_m.py +28 -0
- xoa_driver/internals/hli_v2/ports/port_l23/fault_jkl.py +22 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ghijkl.py +342 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ijkl_chimera.py +50 -0
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_l.py +65 -0
- xoa_driver/internals/hli_v2/ports/port_l23/port_l23ve.py +81 -0
- xoa_driver/internals/hli_v2/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l47/counters.py +146 -0
- xoa_driver/internals/hli_v2/ports/port_l47/main.py +137 -0
- xoa_driver/internals/hli_v2/ports/port_l47/packet_engine.py +20 -0
- xoa_driver/internals/hli_v2/revisions.py +11 -0
- xoa_driver/internals/hli_v2/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/_base_tester.py +207 -0
- xoa_driver/internals/hli_v2/testers/genuine/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/health.py +16 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/rest_api.py +34 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/time_keeper.py +50 -0
- xoa_driver/internals/hli_v2/testers/genuine/l_23/upload_file.py +26 -0
- xoa_driver/internals/hli_v2/testers/genuine/management_interface.py +38 -0
- xoa_driver/internals/hli_v2/testers/l23_tester.py +159 -0
- xoa_driver/internals/hli_v2/testers/l23ve_tester.py +98 -0
- xoa_driver/internals/hli_v2/testers/l47_tester.py +95 -0
- xoa_driver/internals/hli_v2/testers/l47ve_tester.py +50 -0
- xoa_driver/internals/state_storage/__init__.py +0 -0
- xoa_driver/internals/state_storage/_speed_detector.py +121 -0
- xoa_driver/internals/state_storage/modules_state.py +128 -0
- xoa_driver/internals/state_storage/ports_state.py +154 -0
- xoa_driver/internals/state_storage/testers_state.py +104 -0
- xoa_driver/internals/utils/__init__.py +0 -0
- xoa_driver/internals/utils/attributes.py +33 -0
- xoa_driver/internals/utils/cap_id.py +63 -0
- xoa_driver/internals/utils/con_traffic_light.py +88 -0
- xoa_driver/internals/utils/indices/__init__.py +0 -0
- xoa_driver/internals/utils/indices/_interfaces.py +26 -0
- xoa_driver/internals/utils/indices/header_modifier_manager.py +56 -0
- xoa_driver/internals/utils/indices/index_manager.py +95 -0
- xoa_driver/internals/utils/indices/observer.py +17 -0
- xoa_driver/internals/utils/kind.py +19 -0
- xoa_driver/internals/utils/managers/__init__.py +0 -0
- xoa_driver/internals/utils/managers/abc.py +44 -0
- xoa_driver/internals/utils/managers/exceptions.py +22 -0
- xoa_driver/internals/utils/managers/modules_manager.py +118 -0
- xoa_driver/internals/utils/managers/ports_manager.py +116 -0
- xoa_driver/internals/utils/rev_tool.py +21 -0
- xoa_driver/internals/utils/session.py +117 -0
- xoa_driver/internals/warn.py +32 -0
- xoa_driver/lli.py +15 -0
- xoa_driver/misc.py +57 -0
- xoa_driver/modules.py +448 -0
- xoa_driver/ports.py +332 -0
- xoa_driver/testers.py +37 -0
- xoa_driver/utils.py +12 -0
- xoa_driver/v2/__init__.py +11 -0
- xoa_driver/v2/misc.py +77 -0
- xoa_driver/v2/modules.py +308 -0
- xoa_driver/v2/ports.py +232 -0
- xoa_driver/v2/testers.py +24 -0
|
@@ -0,0 +1,700 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
import typing
|
|
4
|
+
import functools
|
|
5
|
+
|
|
6
|
+
from xoa_driver.internals.core.builders import (
|
|
7
|
+
build_get_request,
|
|
8
|
+
build_set_request
|
|
9
|
+
)
|
|
10
|
+
from xoa_driver.internals.core import interfaces
|
|
11
|
+
from xoa_driver.internals.core.token import Token
|
|
12
|
+
from xoa_driver.internals.core.transporter.registry import register_command
|
|
13
|
+
from xoa_driver.internals.core.transporter.protocol.payload import (
|
|
14
|
+
field,
|
|
15
|
+
RequestBodyStruct,
|
|
16
|
+
ResponseBodyStruct,
|
|
17
|
+
XmpByte,
|
|
18
|
+
XmpHex,
|
|
19
|
+
XmpInt,
|
|
20
|
+
XmpLong,
|
|
21
|
+
XmpSequence,
|
|
22
|
+
XmpStr,
|
|
23
|
+
Hex,
|
|
24
|
+
)
|
|
25
|
+
from .enums import (
|
|
26
|
+
CaptureSize,
|
|
27
|
+
ReplayParserState,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@register_command
|
|
32
|
+
@dataclass
|
|
33
|
+
class M4_SYSTEMID:
|
|
34
|
+
"""
|
|
35
|
+
Return the system identifier of a L47 module.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
code: typing.ClassVar[int] = 803
|
|
39
|
+
pushed: typing.ClassVar[bool] = False
|
|
40
|
+
|
|
41
|
+
_connection: 'interfaces.IConnection'
|
|
42
|
+
_module: int
|
|
43
|
+
|
|
44
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
45
|
+
system_id: str = field(XmpStr())
|
|
46
|
+
"""string, module system identifier."""
|
|
47
|
+
|
|
48
|
+
def get(self) -> Token[GetDataAttr]:
|
|
49
|
+
"""Get the system identifier of a L47 module.
|
|
50
|
+
|
|
51
|
+
:return: the system identifier of a L47 module.
|
|
52
|
+
:rtype: M4_SYSTEMID.GetDataAttr
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@register_command
|
|
59
|
+
@dataclass
|
|
60
|
+
class M4_VERSIONNO:
|
|
61
|
+
"""
|
|
62
|
+
Returns a version string containing a combination of information regarding the
|
|
63
|
+
software version and the build environment. The first part of the string is the
|
|
64
|
+
software build version.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
code: typing.ClassVar[int] = 804
|
|
68
|
+
pushed: typing.ClassVar[bool] = False
|
|
69
|
+
|
|
70
|
+
_connection: 'interfaces.IConnection'
|
|
71
|
+
_module: int
|
|
72
|
+
|
|
73
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
74
|
+
version_string: str = field(XmpStr())
|
|
75
|
+
"""string, module version string."""
|
|
76
|
+
|
|
77
|
+
def get(self) -> Token[GetDataAttr]:
|
|
78
|
+
"""Get a version string containing a combination of information regarding the software version and the build environment.
|
|
79
|
+
|
|
80
|
+
:return: a version string containing a combination of information regarding the software version and the build environment
|
|
81
|
+
:rtype: M4_VERSIONNO.GetDataAttr
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@register_command
|
|
88
|
+
@dataclass
|
|
89
|
+
class M4_SYSTEM_STATUS:
|
|
90
|
+
"""
|
|
91
|
+
Returns the L47 module system status in a text string.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
code: typing.ClassVar[int] = 805
|
|
95
|
+
pushed: typing.ClassVar[bool] = False
|
|
96
|
+
|
|
97
|
+
_connection: 'interfaces.IConnection'
|
|
98
|
+
_module: int
|
|
99
|
+
|
|
100
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
101
|
+
status_string: str = field(XmpStr())
|
|
102
|
+
"""string, module status string."""
|
|
103
|
+
|
|
104
|
+
def get(self) -> Token[GetDataAttr]:
|
|
105
|
+
"""Get the L47 module system status in a text string
|
|
106
|
+
|
|
107
|
+
:return: the L47 module system status in a text string
|
|
108
|
+
:rtype: M4_SYSTEM_STATUS.GetDataAttr
|
|
109
|
+
"""
|
|
110
|
+
|
|
111
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
@register_command
|
|
115
|
+
@dataclass
|
|
116
|
+
class M4_COMPATIBLE_CLIENT_VERSION:
|
|
117
|
+
"""
|
|
118
|
+
Returns the recommended and required VulcanMananger client version.
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
code: typing.ClassVar[int] = 806
|
|
122
|
+
pushed: typing.ClassVar[bool] = False
|
|
123
|
+
|
|
124
|
+
_connection: 'interfaces.IConnection'
|
|
125
|
+
_module: int
|
|
126
|
+
|
|
127
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
128
|
+
recommended_major: int = field(XmpInt())
|
|
129
|
+
"""string, recommended major version."""
|
|
130
|
+
recommended_minor: int = field(XmpInt())
|
|
131
|
+
"""string, recommended minor version."""
|
|
132
|
+
recommended_minor_2: int = field(XmpInt())
|
|
133
|
+
"""string, recommended minor 2 version."""
|
|
134
|
+
recommended_minor_3: int = field(XmpInt())
|
|
135
|
+
"""string, recommended minor 3 version."""
|
|
136
|
+
required_major: int = field(XmpInt())
|
|
137
|
+
"""string, required major version."""
|
|
138
|
+
required_minor: int = field(XmpInt())
|
|
139
|
+
"""string, required minor version."""
|
|
140
|
+
required_minor_2: int = field(XmpInt())
|
|
141
|
+
"""string, required minor 2 version."""
|
|
142
|
+
required_minor_3: int = field(XmpInt())
|
|
143
|
+
"""string, required minor 3 version."""
|
|
144
|
+
|
|
145
|
+
def get(self) -> Token[GetDataAttr]:
|
|
146
|
+
"""Get the recommended and required VulcanMananger client version.
|
|
147
|
+
|
|
148
|
+
:return: the recommended and required VulcanMananger client version.
|
|
149
|
+
:rtype: M4_COMPATIBLE_CLIENT_VERSION.GetDataAttr
|
|
150
|
+
"""
|
|
151
|
+
|
|
152
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
@register_command
|
|
156
|
+
@dataclass
|
|
157
|
+
class M4_TIME:
|
|
158
|
+
"""
|
|
159
|
+
Returns the module time in millisecond.
|
|
160
|
+
"""
|
|
161
|
+
|
|
162
|
+
code: typing.ClassVar[int] = 807
|
|
163
|
+
pushed: typing.ClassVar[bool] = False
|
|
164
|
+
|
|
165
|
+
_connection: 'interfaces.IConnection'
|
|
166
|
+
_module: int
|
|
167
|
+
|
|
168
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
169
|
+
time_now: int = field(XmpLong())
|
|
170
|
+
"""long integer, the current time (mSec since module restart)"""
|
|
171
|
+
|
|
172
|
+
def get(self) -> Token[GetDataAttr]:
|
|
173
|
+
"""Get the module time in millisecond.
|
|
174
|
+
|
|
175
|
+
:return: the module time in millisecond.
|
|
176
|
+
:rtype: M4_TIME.GetDataAttr
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
@register_command
|
|
183
|
+
@dataclass
|
|
184
|
+
class M4_SYSTEM_TIME:
|
|
185
|
+
"""
|
|
186
|
+
Sets or returns the modules system time in UTC.
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
code: typing.ClassVar[int] = 808
|
|
190
|
+
pushed: typing.ClassVar[bool] = False
|
|
191
|
+
|
|
192
|
+
_connection: 'interfaces.IConnection'
|
|
193
|
+
_module: int
|
|
194
|
+
|
|
195
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
196
|
+
year: int = field(XmpInt())
|
|
197
|
+
"""integer, the year."""
|
|
198
|
+
month: int = field(XmpInt())
|
|
199
|
+
"""integer, the month."""
|
|
200
|
+
day: int = field(XmpInt())
|
|
201
|
+
"""integer, the day of the mont."""
|
|
202
|
+
hour: int = field(XmpInt())
|
|
203
|
+
"""integer, the hour."""
|
|
204
|
+
minute: int = field(XmpInt())
|
|
205
|
+
"""integer, the minute."""
|
|
206
|
+
second: int = field(XmpInt())
|
|
207
|
+
"""integer, the second."""
|
|
208
|
+
|
|
209
|
+
class SetDataAttr(RequestBodyStruct):
|
|
210
|
+
year: int = field(XmpInt())
|
|
211
|
+
"""integer, the year."""
|
|
212
|
+
month: int = field(XmpInt())
|
|
213
|
+
"""integer, the month."""
|
|
214
|
+
day: int = field(XmpInt())
|
|
215
|
+
"""integer, the day of the mont."""
|
|
216
|
+
hour: int = field(XmpInt())
|
|
217
|
+
"""integer, the hour."""
|
|
218
|
+
minute: int = field(XmpInt())
|
|
219
|
+
"""integer, the minute."""
|
|
220
|
+
second: int = field(XmpInt())
|
|
221
|
+
"""integer, the second."""
|
|
222
|
+
|
|
223
|
+
def get(self) -> Token[GetDataAttr]:
|
|
224
|
+
"""Get the modules system time in UTC.
|
|
225
|
+
|
|
226
|
+
:return: the modules system time in UTC.
|
|
227
|
+
:rtype: M4_SYSTEM_TIME.GetDataAttr
|
|
228
|
+
"""
|
|
229
|
+
|
|
230
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
231
|
+
|
|
232
|
+
def set(self, year: int, month: int, day: int, hour: int, minute: int, second: int) -> Token[None]:
|
|
233
|
+
"""Set the modules system time in UTC.
|
|
234
|
+
|
|
235
|
+
:param year: the year
|
|
236
|
+
:type year: int
|
|
237
|
+
:param month: the month
|
|
238
|
+
:type month: int
|
|
239
|
+
:param day: the day of the month
|
|
240
|
+
:type day: int
|
|
241
|
+
:param hour: the hour
|
|
242
|
+
:type hour: int
|
|
243
|
+
:param minute: the minute
|
|
244
|
+
:type minute: int
|
|
245
|
+
:param second: the second
|
|
246
|
+
:type second: int
|
|
247
|
+
"""
|
|
248
|
+
|
|
249
|
+
return Token(self._connection, build_set_request(self, module=self._module, year=year, month=month, day=day, hour=hour, minute=minute, second=second))
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
@register_command
|
|
253
|
+
@dataclass
|
|
254
|
+
class M4_MEM_INFO:
|
|
255
|
+
"""
|
|
256
|
+
Return the system memory information.
|
|
257
|
+
"""
|
|
258
|
+
|
|
259
|
+
code: typing.ClassVar[int] = 809
|
|
260
|
+
pushed: typing.ClassVar[bool] = False
|
|
261
|
+
|
|
262
|
+
_connection: 'interfaces.IConnection'
|
|
263
|
+
_module: int
|
|
264
|
+
|
|
265
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
266
|
+
year: int = field(XmpLong())
|
|
267
|
+
"""long integer, total memory."""
|
|
268
|
+
month: int = field(XmpLong())
|
|
269
|
+
"""long integer, free memory."""
|
|
270
|
+
|
|
271
|
+
def get(self) -> Token[GetDataAttr]:
|
|
272
|
+
"""Get the system memory information.
|
|
273
|
+
|
|
274
|
+
:return: the system memory information.
|
|
275
|
+
:rtype: M4_MEM_INFO.GetDataAttr
|
|
276
|
+
"""
|
|
277
|
+
|
|
278
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
@register_command
|
|
282
|
+
@dataclass
|
|
283
|
+
class M4_CAPTURE_SIZE:
|
|
284
|
+
"""
|
|
285
|
+
Specify whether to capture whole packets(large) or truncated packets. When
|
|
286
|
+
truncated (small) is selected only the first 128 bytes of the packet are saved.
|
|
287
|
+
"""
|
|
288
|
+
|
|
289
|
+
code: typing.ClassVar[int] = 810
|
|
290
|
+
pushed: typing.ClassVar[bool] = False
|
|
291
|
+
|
|
292
|
+
_connection: 'interfaces.IConnection'
|
|
293
|
+
_module: int
|
|
294
|
+
|
|
295
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
296
|
+
size: CaptureSize = field(XmpByte())
|
|
297
|
+
"""coded byte, specifying whether to capture whole packets or truncated packets."""
|
|
298
|
+
|
|
299
|
+
class SetDataAttr(RequestBodyStruct):
|
|
300
|
+
size: CaptureSize = field(XmpByte())
|
|
301
|
+
"""coded byte, specifying whether to capture whole packets or truncated packets."""
|
|
302
|
+
|
|
303
|
+
def get(self) -> Token[GetDataAttr]:
|
|
304
|
+
"""Get whether to capture whole packets(large) or truncated packets.
|
|
305
|
+
|
|
306
|
+
:return: whether to capture whole packets(large) or truncated packets.
|
|
307
|
+
:rtype: M4_CAPTURE_SIZE.GetDataAttr
|
|
308
|
+
"""
|
|
309
|
+
|
|
310
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
311
|
+
|
|
312
|
+
def set(self, size: CaptureSize) -> Token[None]:
|
|
313
|
+
"""Set whether to capture whole packets(large) or truncated packets.
|
|
314
|
+
|
|
315
|
+
:param size: specifying whether to capture whole packets or truncated packets.
|
|
316
|
+
:type size: CaptureSize
|
|
317
|
+
"""
|
|
318
|
+
|
|
319
|
+
return Token(self._connection, build_set_request(self, module=self._module, size=size))
|
|
320
|
+
|
|
321
|
+
set_full = functools.partialmethod(set, CaptureSize.FULL)
|
|
322
|
+
"""Capture whole packets"""
|
|
323
|
+
|
|
324
|
+
set_small = functools.partialmethod(set, CaptureSize.SMALL)
|
|
325
|
+
"""Capture truncated packets"""
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
@register_command
|
|
329
|
+
@dataclass
|
|
330
|
+
class M4_LICENSE_INFO:
|
|
331
|
+
"""
|
|
332
|
+
Returns the number of available and free PE licenses. Only 'available' number of PEs
|
|
333
|
+
can simultaneously be assigned to reserved ports.
|
|
334
|
+
"""
|
|
335
|
+
|
|
336
|
+
code: typing.ClassVar[int] = 820
|
|
337
|
+
pushed: typing.ClassVar[bool] = False
|
|
338
|
+
|
|
339
|
+
_connection: 'interfaces.IConnection'
|
|
340
|
+
_module: int
|
|
341
|
+
|
|
342
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
343
|
+
pes_available: int = field(XmpInt())
|
|
344
|
+
"""integer, number of PEs that are licensed on the module, and can be used simultaneously."""
|
|
345
|
+
pes_free: int = field(XmpInt())
|
|
346
|
+
"""integer, number of free PE licenses on the module 1G available: integer, number of 1G licenses on the module, that can be used simultaneously."""
|
|
347
|
+
N1g_available: int = field(XmpInt())
|
|
348
|
+
"""integer, number of 1G speed licenses that are licensed on the module, and can be used simultaneously."""
|
|
349
|
+
N1g_free: int = field(XmpInt())
|
|
350
|
+
"""integer, number of 1G speed licenses on the module 1G available: integer, number of 1G licenses on the module, that can be used simultaneously."""
|
|
351
|
+
N10g_available: int = field(XmpInt())
|
|
352
|
+
"""integer, number of 10G speed licenses that are licensed on the module, and can be used simultaneously."""
|
|
353
|
+
N10g_free: int = field(XmpInt())
|
|
354
|
+
"""integer, number of free 10G speed licenses on the module 1G available: integer, number of 1G licenses on the module, that can be used simultaneously."""
|
|
355
|
+
N25g_available: int = field(XmpInt())
|
|
356
|
+
"""integer, number of 25G speed licenses that are licensed on the module, and can be used simultaneously."""
|
|
357
|
+
N25g_free: int = field(XmpInt())
|
|
358
|
+
"""integer, number of free 25G speed licenses on the module 1G available: integer, number of 1G licenses on the module, that can be used simultaneously."""
|
|
359
|
+
N40g_available: int = field(XmpInt())
|
|
360
|
+
"""integer, number of 40G speed licenses that are licensed on the module, and can be used simultaneously."""
|
|
361
|
+
N40g_free: int = field(XmpInt())
|
|
362
|
+
"""integer, number of free 40G speed licenses on the module 1G available: integer, number of 1G licenses on the module, that can be used simultaneously."""
|
|
363
|
+
|
|
364
|
+
def get(self) -> Token[GetDataAttr]:
|
|
365
|
+
"""Get the number of available and free PE licenses.
|
|
366
|
+
|
|
367
|
+
:return: the number of available and free PE licenses
|
|
368
|
+
:rtype: M4_LICENSE_INFO.GetDataAttr
|
|
369
|
+
"""
|
|
370
|
+
|
|
371
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
@register_command
|
|
375
|
+
@dataclass
|
|
376
|
+
class M4_REPLAY_PARSE_START:
|
|
377
|
+
"""
|
|
378
|
+
Command to start parsing an uploaded Capture File (in PCAP format) intended for
|
|
379
|
+
use in a replay test scenario. The result of the parsing - if successful - is a
|
|
380
|
+
Replay File (in BSON format) with the same name as the Capture File, which can
|
|
381
|
+
be used as parameter to P4G_REPLAY_filename command. If parsing is unsuccessful,
|
|
382
|
+
a Replay File is created containing the parse result. The
|
|
383
|
+
M4_REPLAY_FILE_INFO_BSON command can be used to get information about a Replay
|
|
384
|
+
File - including the parse result. PCAP Capture Files can be uploaded to the L47
|
|
385
|
+
chassis using FTP. The 'root' location of Capture Files uploaded manually by the
|
|
386
|
+
user is /var/ftp/pub/replay/pcap/. Three subdirectories exist: cache/, user/ and
|
|
387
|
+
xena/. cache / and xena/ is used by Vulcan Manager, and user/ is intended for
|
|
388
|
+
manual upload and parsing of Capture Files. A similar directory structure is
|
|
389
|
+
present for Replay Files generated by the parsing, and the 'root' location is
|
|
390
|
+
/var/ftp/pub/replay/bson/.
|
|
391
|
+
"""
|
|
392
|
+
|
|
393
|
+
code: typing.ClassVar[int] = 830
|
|
394
|
+
pushed: typing.ClassVar[bool] = False
|
|
395
|
+
|
|
396
|
+
_connection: 'interfaces.IConnection'
|
|
397
|
+
_module: int
|
|
398
|
+
|
|
399
|
+
class SetDataAttr(RequestBodyStruct):
|
|
400
|
+
filename: str = field(XmpStr())
|
|
401
|
+
"""string, filename (including relative path and excluding the '.pcap' extension)."""
|
|
402
|
+
|
|
403
|
+
def set(self, filename: str) -> Token[None]:
|
|
404
|
+
"""Start parsing an uploaded Capture File
|
|
405
|
+
|
|
406
|
+
:param filename: filename (including relative path and excluding the '.pcap' extension).
|
|
407
|
+
:type filename: str
|
|
408
|
+
"""
|
|
409
|
+
|
|
410
|
+
return Token(self._connection, build_set_request(self, module=self._module, filename=filename))
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
@register_command
|
|
414
|
+
@dataclass
|
|
415
|
+
class M4_REPLAY_PARSE_STOP:
|
|
416
|
+
"""
|
|
417
|
+
Command to stop parsing a Capture File. Parsing of very large Capture Files may
|
|
418
|
+
take several seconds, and may be aborted using this command. No parameters
|
|
419
|
+
"""
|
|
420
|
+
|
|
421
|
+
code: typing.ClassVar[int] = 831
|
|
422
|
+
pushed: typing.ClassVar[bool] = False
|
|
423
|
+
|
|
424
|
+
_connection: 'interfaces.IConnection'
|
|
425
|
+
_module: int
|
|
426
|
+
|
|
427
|
+
class SetDataAttr(RequestBodyStruct):
|
|
428
|
+
pass
|
|
429
|
+
|
|
430
|
+
def set(self) -> Token[None]:
|
|
431
|
+
"""Stop parsing a Capture File.
|
|
432
|
+
"""
|
|
433
|
+
|
|
434
|
+
return Token(self._connection, build_set_request(self, module=self._module))
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
@register_command
|
|
438
|
+
@dataclass
|
|
439
|
+
class M4_REPLAY_PARSE_STATE:
|
|
440
|
+
"""
|
|
441
|
+
Only one Capture File can be parsed at a time. This command returns the state of
|
|
442
|
+
the parser, which can be PARSING or OFF. M4_REPLAY_PARSE_START command is only
|
|
443
|
+
accepted when the parser state is OFF.
|
|
444
|
+
"""
|
|
445
|
+
|
|
446
|
+
code: typing.ClassVar[int] = 832
|
|
447
|
+
pushed: typing.ClassVar[bool] = False
|
|
448
|
+
|
|
449
|
+
_connection: 'interfaces.IConnection'
|
|
450
|
+
_module: int
|
|
451
|
+
|
|
452
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
453
|
+
state: ReplayParserState = field(XmpByte())
|
|
454
|
+
"""coded byte, state of the replay parser"""
|
|
455
|
+
|
|
456
|
+
def get(self) -> Token[GetDataAttr]:
|
|
457
|
+
"""Get capture file parsing state.
|
|
458
|
+
|
|
459
|
+
:return: capture file parsing state
|
|
460
|
+
:rtype: M4_REPLAY_PARSE_STATE.GetDataAttr
|
|
461
|
+
"""
|
|
462
|
+
|
|
463
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
@register_command
|
|
467
|
+
@dataclass
|
|
468
|
+
class M4_REPLAY_PARSER_PARAMS:
|
|
469
|
+
"""
|
|
470
|
+
Configuration of parameters for the parsing of pcap files.
|
|
471
|
+
"""
|
|
472
|
+
|
|
473
|
+
code: typing.ClassVar[int] = 833
|
|
474
|
+
pushed: typing.ClassVar[bool] = False
|
|
475
|
+
|
|
476
|
+
_connection: 'interfaces.IConnection'
|
|
477
|
+
_module: int
|
|
478
|
+
|
|
479
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
480
|
+
tcp_port: int = field(XmpInt())
|
|
481
|
+
"""integer, server TCP Port of dummy TCP connection inserted in UDP only replay files"""
|
|
482
|
+
|
|
483
|
+
class SetDataAttr(RequestBodyStruct):
|
|
484
|
+
tcp_port: int = field(XmpInt())
|
|
485
|
+
"""integer, server TCP Port of dummy TCP connection inserted in UDP only replay files"""
|
|
486
|
+
|
|
487
|
+
def get(self) -> Token[GetDataAttr]:
|
|
488
|
+
"""Get the configuration of parameters for the parsing of pcap files.
|
|
489
|
+
|
|
490
|
+
:return: the configuration of parameters for the parsing of pcap files
|
|
491
|
+
:rtype: M4_REPLAY_PARSER_PARAMS.GetDataAttr
|
|
492
|
+
"""
|
|
493
|
+
|
|
494
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
495
|
+
|
|
496
|
+
def set(self, tcp_port: int) -> Token[None]:
|
|
497
|
+
"""Set the configuration of parameters for the parsing of pcap files.
|
|
498
|
+
|
|
499
|
+
:param tcp_port: server-side TCP port of the dummy TCP connection inserted in UDP.
|
|
500
|
+
:type tcp_port: int
|
|
501
|
+
"""
|
|
502
|
+
|
|
503
|
+
return Token(self._connection, build_set_request(self, module=self._module, tcp_port=tcp_port))
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
@register_command
|
|
507
|
+
@dataclass
|
|
508
|
+
class M4_REPLAY_FILE_LIST_BSON:
|
|
509
|
+
"""
|
|
510
|
+
Works as ``M4_REPLAY_FILE_LIST``, but returns the file list formatted as a BSON
|
|
511
|
+
document.
|
|
512
|
+
"""
|
|
513
|
+
|
|
514
|
+
code: typing.ClassVar[int] = 840
|
|
515
|
+
pushed: typing.ClassVar[bool] = False
|
|
516
|
+
|
|
517
|
+
_connection: 'interfaces.IConnection'
|
|
518
|
+
_module: int
|
|
519
|
+
|
|
520
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
521
|
+
bson: typing.List[int] = field(XmpSequence(types_chunk=[XmpByte()]))
|
|
522
|
+
"""list of hex bytes, bson document containing the file list"""
|
|
523
|
+
|
|
524
|
+
def get(self) -> Token[GetDataAttr]:
|
|
525
|
+
"""Get the replay file list in BSON document format.
|
|
526
|
+
|
|
527
|
+
:return: the replay file list in BSON format
|
|
528
|
+
:rtype: M4_REPLAY_FILE_LIST_BSON.GetDataAttr
|
|
529
|
+
"""
|
|
530
|
+
|
|
531
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
@register_command
|
|
535
|
+
@dataclass
|
|
536
|
+
class M4_REPLAY_FILE_LIST:
|
|
537
|
+
"""
|
|
538
|
+
Returns a list of Replay Files (``.bson`` files) in the 'user' Replay File
|
|
539
|
+
directory (``/var/ftp/pub/replay/bson/user/``).
|
|
540
|
+
"""
|
|
541
|
+
|
|
542
|
+
code: typing.ClassVar[int] = 841
|
|
543
|
+
pushed: typing.ClassVar[bool] = False
|
|
544
|
+
|
|
545
|
+
_connection: 'interfaces.IConnection'
|
|
546
|
+
_module: int
|
|
547
|
+
|
|
548
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
549
|
+
file_list: str = field(XmpStr())
|
|
550
|
+
"""string, comma separated list of filenames excluding the '.bson' extension."""
|
|
551
|
+
|
|
552
|
+
def get(self) -> Token[GetDataAttr]:
|
|
553
|
+
"""Generate a list of Replay Files in BSON document on the tester.
|
|
554
|
+
|
|
555
|
+
:return: a list of Replay Files in BSON document on the tester
|
|
556
|
+
:rtype: M4_REPLAY_FILE_LIST.GetDataAttr
|
|
557
|
+
"""
|
|
558
|
+
|
|
559
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
@register_command
|
|
563
|
+
@dataclass
|
|
564
|
+
class M4_CAPTURE_FILE_LIST_BSON:
|
|
565
|
+
"""
|
|
566
|
+
Works as ``M4_CAPTURE_FILE_LIST``, but returns the file list formatted as a BSON
|
|
567
|
+
document.
|
|
568
|
+
"""
|
|
569
|
+
|
|
570
|
+
code: typing.ClassVar[int] = 842
|
|
571
|
+
pushed: typing.ClassVar[bool] = False
|
|
572
|
+
|
|
573
|
+
_connection: 'interfaces.IConnection'
|
|
574
|
+
_module: int
|
|
575
|
+
|
|
576
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
577
|
+
bson: typing.List[int] = field(XmpSequence(types_chunk=[XmpByte()]))
|
|
578
|
+
"""list of hex bytes, bson document containing the file list"""
|
|
579
|
+
|
|
580
|
+
def get(self) -> Token[GetDataAttr]:
|
|
581
|
+
"""Get the capture file list in BSON document.
|
|
582
|
+
|
|
583
|
+
:return: the capture file list in BSON document
|
|
584
|
+
:rtype: M4_CAPTURE_FILE_LIST_BSON.GetDataAttr
|
|
585
|
+
"""
|
|
586
|
+
|
|
587
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
@register_command
|
|
591
|
+
@dataclass
|
|
592
|
+
class M4_CAPTURE_FILE_LIST:
|
|
593
|
+
"""
|
|
594
|
+
Returns a list of Capture Files (``.pcap`` files) in the 'user' Capture File
|
|
595
|
+
directory (``/var/ftp/pub/replay/pcap/user/``).
|
|
596
|
+
"""
|
|
597
|
+
|
|
598
|
+
code: typing.ClassVar[int] = 843
|
|
599
|
+
pushed: typing.ClassVar[bool] = False
|
|
600
|
+
|
|
601
|
+
_connection: 'interfaces.IConnection'
|
|
602
|
+
_module: int
|
|
603
|
+
|
|
604
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
605
|
+
file_list: str = field(XmpStr())
|
|
606
|
+
"""string, comma separated list of filenames excluding the '.pcap' extension."""
|
|
607
|
+
|
|
608
|
+
def get(self) -> Token[GetDataAttr]:
|
|
609
|
+
"""Generate a list of Capture Files in BSON document on the tester.
|
|
610
|
+
|
|
611
|
+
:return: list of Capture Files in BSON document on the tester
|
|
612
|
+
:rtype: M4_CAPTURE_FILE_LIST.GetDataAttr
|
|
613
|
+
"""
|
|
614
|
+
|
|
615
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
@register_command
|
|
619
|
+
@dataclass
|
|
620
|
+
class M4_REPLAY_FILE_DELETE:
|
|
621
|
+
"""
|
|
622
|
+
Command to delete a Replay File (``.bson`` file) in the Replay File directory
|
|
623
|
+
(``/var/ftp/pub/replay/bson/``). For information about the location and directory
|
|
624
|
+
structure for the Replay Files, see: M4_REPLAY_PARSE_START
|
|
625
|
+
"""
|
|
626
|
+
|
|
627
|
+
code: typing.ClassVar[int] = 845
|
|
628
|
+
pushed: typing.ClassVar[bool] = False
|
|
629
|
+
|
|
630
|
+
_connection: 'interfaces.IConnection'
|
|
631
|
+
_module: int
|
|
632
|
+
|
|
633
|
+
class SetDataAttr(RequestBodyStruct):
|
|
634
|
+
filename: str = field(XmpStr())
|
|
635
|
+
"""string, file name (including relative path and excluding the '.bson' extension)."""
|
|
636
|
+
|
|
637
|
+
def set(self, filename: str) -> Token[None]:
|
|
638
|
+
"""Delete a Replay File in the Replay File directory.
|
|
639
|
+
|
|
640
|
+
:param filename: file name (including relative path and excluding the ``.bson`` extension).
|
|
641
|
+
:type filename: str
|
|
642
|
+
"""
|
|
643
|
+
|
|
644
|
+
return Token(self._connection, build_set_request(self, module=self._module, filename=filename))
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
@register_command
|
|
648
|
+
@dataclass
|
|
649
|
+
class M4_CAPTURE_FILE_DELETE:
|
|
650
|
+
"""
|
|
651
|
+
Command to delete a Capture File (``.pcap`` file) in the Capture File directory
|
|
652
|
+
(``/var/ftp/pub/replay/pcap/``). For information about the location and directory
|
|
653
|
+
structure for the Capture Files, see: M4_REPLAY_PARSE_START
|
|
654
|
+
"""
|
|
655
|
+
|
|
656
|
+
code: typing.ClassVar[int] = 846
|
|
657
|
+
pushed: typing.ClassVar[bool] = False
|
|
658
|
+
|
|
659
|
+
_connection: 'interfaces.IConnection'
|
|
660
|
+
_module: int
|
|
661
|
+
|
|
662
|
+
class SetDataAttr(RequestBodyStruct):
|
|
663
|
+
filename: str = field(XmpStr())
|
|
664
|
+
"""string, file name (including relative path and excluding the '.pcap' extension)."""
|
|
665
|
+
|
|
666
|
+
def set(self, filename: str) -> Token[None]:
|
|
667
|
+
"""Delete a Capture File in the Capture File directory.
|
|
668
|
+
|
|
669
|
+
:param filename: file name (including relative path and excluding the ``.pcap`` extension).
|
|
670
|
+
:type filename: str
|
|
671
|
+
"""
|
|
672
|
+
|
|
673
|
+
return Token(self._connection, build_set_request(self, module=self._module, filename=filename))
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
@register_command
|
|
677
|
+
@dataclass
|
|
678
|
+
class M4_TLS_CIPHER_SUITES:
|
|
679
|
+
"""
|
|
680
|
+
Returns a list of supported TLS Cipher Suites.
|
|
681
|
+
"""
|
|
682
|
+
|
|
683
|
+
code: typing.ClassVar[int] = 852
|
|
684
|
+
pushed: typing.ClassVar[bool] = False
|
|
685
|
+
|
|
686
|
+
_connection: 'interfaces.IConnection'
|
|
687
|
+
_module: int
|
|
688
|
+
|
|
689
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
690
|
+
cipher_suites: Hex = field(XmpHex())
|
|
691
|
+
"""list of hex bytes, list of IANA values of supported cipher suites"""
|
|
692
|
+
|
|
693
|
+
def get(self) -> Token[GetDataAttr]:
|
|
694
|
+
"""Get a list of supported TLS Cipher Suites.
|
|
695
|
+
|
|
696
|
+
:return: list of IANA values of supported cipher suites
|
|
697
|
+
:rtype: M4_TLS_CIPHER_SUITES.GetDataAttr
|
|
698
|
+
"""
|
|
699
|
+
|
|
700
|
+
return Token(self._connection, build_get_request(self, module=self._module))
|