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,1018 @@
|
|
|
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
|
+
XmpInt,
|
|
19
|
+
XmpLong,
|
|
20
|
+
XmpStr
|
|
21
|
+
)
|
|
22
|
+
from .enums import (
|
|
23
|
+
OnOff,
|
|
24
|
+
TPLDMode,
|
|
25
|
+
CorruptionType,
|
|
26
|
+
PolicerMode,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@register_command
|
|
31
|
+
@dataclass
|
|
32
|
+
class PE_FCSDROP:
|
|
33
|
+
"""
|
|
34
|
+
The action on packets with FCS errors on a port.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
code: typing.ClassVar[int] = 1601
|
|
38
|
+
pushed: typing.ClassVar[bool] = True
|
|
39
|
+
|
|
40
|
+
_connection: 'interfaces.IConnection'
|
|
41
|
+
_module: int
|
|
42
|
+
_port: int
|
|
43
|
+
|
|
44
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
45
|
+
on_off: OnOff = field(XmpByte())
|
|
46
|
+
"""coded byte, the action on packets with FCS errors on a port"""
|
|
47
|
+
|
|
48
|
+
class SetDataAttr(RequestBodyStruct):
|
|
49
|
+
on_off: OnOff = field(XmpByte())
|
|
50
|
+
"""coded byte, the action on packets with FCS errors on a port"""
|
|
51
|
+
|
|
52
|
+
def get(self) -> Token[GetDataAttr]:
|
|
53
|
+
"""Get the status of whether the action on packets with FCS errors on a port is enabled.
|
|
54
|
+
|
|
55
|
+
:return: whether the action on packets with FCS errors on a port is enabled
|
|
56
|
+
:rtype: PE_FCSDROP.GetDataAttr
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
60
|
+
|
|
61
|
+
def set(self, on_off: OnOff) -> Token[None]:
|
|
62
|
+
"""Set the status of whether the action on packets with FCS errors on a port is enabled.
|
|
63
|
+
|
|
64
|
+
:param on_off: whether the action on packets with FCS errors on a port is enabled
|
|
65
|
+
:type on_off: OnOff
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, on_off=on_off))
|
|
69
|
+
|
|
70
|
+
set_off = functools.partialmethod(set, OnOff.OFF)
|
|
71
|
+
"""Disable the action on packets with FCS errors on a port.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
set_on = functools.partialmethod(set, OnOff.ON)
|
|
75
|
+
"""Enable the action on packets with FCS errors on a port.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@register_command
|
|
80
|
+
@dataclass
|
|
81
|
+
class PE_TPLDMODE:
|
|
82
|
+
"""
|
|
83
|
+
The action indicates the TPLD mode to be used per port.
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
code: typing.ClassVar[int] = 1602
|
|
87
|
+
pushed: typing.ClassVar[bool] = True
|
|
88
|
+
|
|
89
|
+
_connection: 'interfaces.IConnection'
|
|
90
|
+
_module: int
|
|
91
|
+
_port: int
|
|
92
|
+
|
|
93
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
94
|
+
mode: TPLDMode = field(XmpByte())
|
|
95
|
+
"""coded byte, indicating the TPLD mode."""
|
|
96
|
+
|
|
97
|
+
class SetDataAttr(RequestBodyStruct):
|
|
98
|
+
mode: TPLDMode = field(XmpByte())
|
|
99
|
+
"""coded byte, indicating the TPLD mode."""
|
|
100
|
+
|
|
101
|
+
def get(self) -> Token[GetDataAttr]:
|
|
102
|
+
"""Get the TPLD mode of the port.
|
|
103
|
+
|
|
104
|
+
:return: indicating the TPLD mode
|
|
105
|
+
:rtype: PE_TPLDMODE.GetDataAttr
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
109
|
+
|
|
110
|
+
def set(self, mode: TPLDMode) -> Token[None]:
|
|
111
|
+
"""Set the TPLD mode of the port.
|
|
112
|
+
|
|
113
|
+
:param mode: indicating the TPLD mode
|
|
114
|
+
:type mode: TPLDMode
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, mode=mode))
|
|
118
|
+
|
|
119
|
+
set_normal = functools.partialmethod(set, TPLDMode.NORMAL)
|
|
120
|
+
"""Set the TPLD mode to Normal.
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
set_micro = functools.partialmethod(set, TPLDMode.MICRO)
|
|
124
|
+
"""Set the TPLD mode to Micro.
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
@register_command
|
|
129
|
+
@dataclass
|
|
130
|
+
class PE_COMMENT:
|
|
131
|
+
"""
|
|
132
|
+
Flow description.
|
|
133
|
+
"""
|
|
134
|
+
|
|
135
|
+
code: typing.ClassVar[int] = 1605
|
|
136
|
+
pushed: typing.ClassVar[bool] = True
|
|
137
|
+
|
|
138
|
+
_connection: 'interfaces.IConnection'
|
|
139
|
+
_module: int
|
|
140
|
+
_port: int
|
|
141
|
+
_flow_xindex: int
|
|
142
|
+
|
|
143
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
144
|
+
comment: str = field(XmpStr())
|
|
145
|
+
"""string, containing the description of the flow."""
|
|
146
|
+
|
|
147
|
+
class SetDataAttr(RequestBodyStruct):
|
|
148
|
+
comment: str = field(XmpStr())
|
|
149
|
+
"""string, containing the description of the flow."""
|
|
150
|
+
|
|
151
|
+
def get(self) -> Token[GetDataAttr]:
|
|
152
|
+
"""Get the flow description.
|
|
153
|
+
|
|
154
|
+
:return: the description of the flow
|
|
155
|
+
:rtype: PE_COMMENT.GetDataAttr
|
|
156
|
+
"""
|
|
157
|
+
|
|
158
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
159
|
+
|
|
160
|
+
def set(self, comment: str) -> Token[None]:
|
|
161
|
+
"""Set the flow description.
|
|
162
|
+
|
|
163
|
+
:param comment: the description of the flow
|
|
164
|
+
:type comment: str
|
|
165
|
+
"""
|
|
166
|
+
|
|
167
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex], comment=comment))
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
@register_command
|
|
171
|
+
@dataclass
|
|
172
|
+
class PE_INDICES:
|
|
173
|
+
"""
|
|
174
|
+
Get the flow indices. Currently the number of flows is 8.
|
|
175
|
+
"""
|
|
176
|
+
|
|
177
|
+
code: typing.ClassVar[int] = 1608
|
|
178
|
+
pushed: typing.ClassVar[bool] = True
|
|
179
|
+
|
|
180
|
+
_connection: 'interfaces.IConnection'
|
|
181
|
+
_module: int
|
|
182
|
+
_port: int
|
|
183
|
+
|
|
184
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
185
|
+
flow0_id: int = field(XmpInt())
|
|
186
|
+
"""integer, id of flow 0."""
|
|
187
|
+
flow1_id: int = field(XmpInt())
|
|
188
|
+
"""integer, id of flow 1."""
|
|
189
|
+
flow2_id: int = field(XmpInt())
|
|
190
|
+
"""integer, id of flow 2."""
|
|
191
|
+
flow3_id: int = field(XmpInt())
|
|
192
|
+
"""integer, id of flow 3."""
|
|
193
|
+
flow4_id: int = field(XmpInt())
|
|
194
|
+
"""integer, id of flow 4."""
|
|
195
|
+
flow5_id: int = field(XmpInt())
|
|
196
|
+
"""integer, id of flow 5."""
|
|
197
|
+
flow6_id: int = field(XmpInt())
|
|
198
|
+
"""integer, id of flow 6."""
|
|
199
|
+
flow7_id: int = field(XmpInt())
|
|
200
|
+
"""integer, id of flow 7."""
|
|
201
|
+
|
|
202
|
+
def get(self) -> Token[GetDataAttr]:
|
|
203
|
+
"""Get the flow indices of a port. Currently the number of flows is fixed to 8.
|
|
204
|
+
|
|
205
|
+
:return: the flow indices of a port
|
|
206
|
+
:rtype: PE_INDICES.GetDataAttr
|
|
207
|
+
"""
|
|
208
|
+
|
|
209
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
@register_command
|
|
213
|
+
@dataclass
|
|
214
|
+
class PE_LATENCYRANGE:
|
|
215
|
+
"""
|
|
216
|
+
Retrieve minimum and maximum configurable latency per flow in nanoseconds.
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
code: typing.ClassVar[int] = 1646
|
|
220
|
+
pushed: typing.ClassVar[bool] = False
|
|
221
|
+
|
|
222
|
+
_connection: 'interfaces.IConnection'
|
|
223
|
+
_module: int
|
|
224
|
+
_port: int
|
|
225
|
+
_flow_xindex: int
|
|
226
|
+
|
|
227
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
228
|
+
min: int = field(XmpLong())
|
|
229
|
+
"""long integer, minimum configurable latency per flow in nanoseconds."""
|
|
230
|
+
max: int = field(XmpLong())
|
|
231
|
+
"""long integer, maximum configurable latency per flow in nanoseconds."""
|
|
232
|
+
|
|
233
|
+
def get(self) -> Token[GetDataAttr]:
|
|
234
|
+
"""Get the minimum and maximum configurable latency per flow in nanoseconds.
|
|
235
|
+
|
|
236
|
+
:return: minimum and maximum configurable latency per flow in nanoseconds.
|
|
237
|
+
:rtype: PE_LATENCYRANGE.GetDataAttr
|
|
238
|
+
"""
|
|
239
|
+
|
|
240
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
@register_command
|
|
244
|
+
@dataclass
|
|
245
|
+
class PE_CORRUPT:
|
|
246
|
+
"""
|
|
247
|
+
Configures impairment corruption type.
|
|
248
|
+
|
|
249
|
+
.. note::
|
|
250
|
+
|
|
251
|
+
IP / TCP / UDP corruption modes are not supported on default flow (0)
|
|
252
|
+
|
|
253
|
+
"""
|
|
254
|
+
|
|
255
|
+
code: typing.ClassVar[int] = 1660
|
|
256
|
+
pushed: typing.ClassVar[bool] = True
|
|
257
|
+
|
|
258
|
+
_connection: 'interfaces.IConnection'
|
|
259
|
+
_module: int
|
|
260
|
+
_port: int
|
|
261
|
+
_flow_xindex: int
|
|
262
|
+
|
|
263
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
264
|
+
corruption_type: CorruptionType = field(XmpByte())
|
|
265
|
+
"""coded byte, specifying corruption type."""
|
|
266
|
+
|
|
267
|
+
class SetDataAttr(RequestBodyStruct):
|
|
268
|
+
corruption_type: CorruptionType = field(XmpByte())
|
|
269
|
+
"""coded byte, specifying corruption type."""
|
|
270
|
+
|
|
271
|
+
def get(self) -> Token[GetDataAttr]:
|
|
272
|
+
"""Get the impairment corruption type of a flow.
|
|
273
|
+
|
|
274
|
+
:return: the impairment corruption type of a flow.
|
|
275
|
+
:rtype: PE_CORRUPT.GetDataAttr
|
|
276
|
+
"""
|
|
277
|
+
|
|
278
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
279
|
+
|
|
280
|
+
def set(self, corruption_type: CorruptionType) -> Token[None]:
|
|
281
|
+
"""Set the impairment corruption type.
|
|
282
|
+
|
|
283
|
+
:param corruption_type: corruption type
|
|
284
|
+
:type corruption_type: CorruptionType
|
|
285
|
+
"""
|
|
286
|
+
|
|
287
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex], corruption_type=corruption_type))
|
|
288
|
+
|
|
289
|
+
set_off = functools.partialmethod(set, CorruptionType.OFF)
|
|
290
|
+
"""Set the corruption type to OFF.
|
|
291
|
+
"""
|
|
292
|
+
|
|
293
|
+
set_eth = functools.partialmethod(set, CorruptionType.ETH)
|
|
294
|
+
"""Set the corruption type to Ethernet.
|
|
295
|
+
"""
|
|
296
|
+
|
|
297
|
+
set_ip = functools.partialmethod(set, CorruptionType.IP)
|
|
298
|
+
"""Set the corruption type to IP.
|
|
299
|
+
"""
|
|
300
|
+
|
|
301
|
+
set_udp = functools.partialmethod(set, CorruptionType.UDP)
|
|
302
|
+
"""Set the corruption type to UDP.
|
|
303
|
+
"""
|
|
304
|
+
|
|
305
|
+
set_tcp = functools.partialmethod(set, CorruptionType.TCP)
|
|
306
|
+
"""Set the corruption type to TCP.
|
|
307
|
+
"""
|
|
308
|
+
|
|
309
|
+
set_ber = functools.partialmethod(set, CorruptionType.BER)
|
|
310
|
+
"""Set the corruption type to Bit Error Rate.
|
|
311
|
+
"""
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
@register_command
|
|
315
|
+
@dataclass
|
|
316
|
+
class PE_MISORDER:
|
|
317
|
+
"""
|
|
318
|
+
Configures the misordering depth in number of packets.
|
|
319
|
+
|
|
320
|
+
.. note::
|
|
321
|
+
|
|
322
|
+
probability * (depth + 1) should be less than 1,000,000. (see PED_FIXED)
|
|
323
|
+
|
|
324
|
+
"""
|
|
325
|
+
|
|
326
|
+
code: typing.ClassVar[int] = 1661
|
|
327
|
+
pushed: typing.ClassVar[bool] = True
|
|
328
|
+
|
|
329
|
+
_connection: 'interfaces.IConnection'
|
|
330
|
+
_module: int
|
|
331
|
+
_port: int
|
|
332
|
+
_flow_xindex: int
|
|
333
|
+
|
|
334
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
335
|
+
depth: int = field(XmpInt())
|
|
336
|
+
"""integer, specifies the misordering depth (Range 1 - 32). Default value. probability * (depth + 1) should be less than 1,000,000. (see PED_FIXED)"""
|
|
337
|
+
|
|
338
|
+
class SetDataAttr(RequestBodyStruct):
|
|
339
|
+
depth: int = field(XmpInt())
|
|
340
|
+
"""integer, specifies the misordering depth (Range 1 - 32). Default value. probability * (depth + 1) should be less than 1,000,000. (see PED_FIXED)"""
|
|
341
|
+
|
|
342
|
+
def get(self) -> Token[GetDataAttr]:
|
|
343
|
+
"""Get the misordering depth in number of packets of a flow.
|
|
344
|
+
|
|
345
|
+
:return: the misordering depth (Range 1 - 32). Default value.
|
|
346
|
+
:rtype: PE_MISORDER.GetDataAttr
|
|
347
|
+
"""
|
|
348
|
+
|
|
349
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
350
|
+
|
|
351
|
+
def set(self, depth: int) -> Token[None]:
|
|
352
|
+
"""Set the misordering depth in number of packets of a flow. Note: probability [see
|
|
353
|
+
PED_FIXED] * (depth + 1) should be less than 1,000,000.
|
|
354
|
+
|
|
355
|
+
:param depth: the misordering depth (Range 1 - 32). Default value.
|
|
356
|
+
:type depth: int
|
|
357
|
+
"""
|
|
358
|
+
|
|
359
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex], depth=depth))
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
@register_command
|
|
363
|
+
@dataclass
|
|
364
|
+
class PE_BANDPOLICER:
|
|
365
|
+
"""
|
|
366
|
+
Configures the bandwidth policer.
|
|
367
|
+
"""
|
|
368
|
+
|
|
369
|
+
code: typing.ClassVar[int] = 1662
|
|
370
|
+
pushed: typing.ClassVar[bool] = True
|
|
371
|
+
|
|
372
|
+
_connection: 'interfaces.IConnection'
|
|
373
|
+
_module: int
|
|
374
|
+
_port: int
|
|
375
|
+
_flow_xindex: int
|
|
376
|
+
|
|
377
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
378
|
+
on_off: OnOff = field(XmpByte())
|
|
379
|
+
"""coded byte, enables/disables policer. Note: PED_ENABLE is not supported for the policer."""
|
|
380
|
+
mode: PolicerMode = field(XmpByte())
|
|
381
|
+
"""coded byte, sets policer mode."""
|
|
382
|
+
cir: int = field(XmpInt())
|
|
383
|
+
"""integer, policer committed information rate in units of 100 kbps (range 0 to 1000000), default is 0."""
|
|
384
|
+
cbs: int = field(XmpInt())
|
|
385
|
+
"""integer, policer committed burst burst in bytes (range 0 to 4194304), default is 0."""
|
|
386
|
+
|
|
387
|
+
class SetDataAttr(RequestBodyStruct):
|
|
388
|
+
on_off: OnOff = field(XmpByte())
|
|
389
|
+
"""coded byte, enables/disables policer. Note: PED_ENABLE is not supported for the policer."""
|
|
390
|
+
mode: PolicerMode = field(XmpByte())
|
|
391
|
+
"""coded byte, sets policer mode."""
|
|
392
|
+
cir: int = field(XmpInt())
|
|
393
|
+
"""integer, policer committed information rate in units of 100 kbps (range 0 to 1000000), default is 0."""
|
|
394
|
+
cbs: int = field(XmpInt())
|
|
395
|
+
"""integer, policer committed burst size in bytes (range 0 to 4194304), default is 0."""
|
|
396
|
+
|
|
397
|
+
def get(self) -> Token[GetDataAttr]:
|
|
398
|
+
"""Get the bandwidth policer configuration.
|
|
399
|
+
|
|
400
|
+
:return: enabled/disabled, policer mode, committed information rate, and committed burst size.
|
|
401
|
+
:rtype: PE_BANDPOLICER.GetDataAttr
|
|
402
|
+
"""
|
|
403
|
+
|
|
404
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
405
|
+
|
|
406
|
+
def set(self, on_off: OnOff, mode: PolicerMode, cir: int, cbs: int) -> Token[None]:
|
|
407
|
+
"""Set the bandwidth policer configuration.
|
|
408
|
+
|
|
409
|
+
:param on_off: enables/disables policer. Note: PED_ENABLE is not supported for the policer.
|
|
410
|
+
:type on_off: OnOff
|
|
411
|
+
:param mode: policer mode
|
|
412
|
+
:type mode: PolicerMode
|
|
413
|
+
:param cir: policer committed information rate in units of 100 kbps (range 0 to 1000000), default is 0.
|
|
414
|
+
:type cir: int
|
|
415
|
+
:param cbs: policer committed burst burst in bytes (range 0 to 4194304), default is 0.
|
|
416
|
+
:type cbs: int
|
|
417
|
+
"""
|
|
418
|
+
|
|
419
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex], on_off=on_off, mode=mode, cir=cir, cbs=cbs))
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
@register_command
|
|
423
|
+
@dataclass
|
|
424
|
+
class PE_BANDSHAPER:
|
|
425
|
+
"""
|
|
426
|
+
Configures the bandwidth shaper. L1 (0) (Shaper performed at Layer 1 level. I.e. including
|
|
427
|
+
the preamble and min interpacket gap) L2 (1) (Shaper performed at Layer 2 level. I.e. excluding the preamble and min interpacket gap) Default value: L2 (0)
|
|
428
|
+
"""
|
|
429
|
+
|
|
430
|
+
code: typing.ClassVar[int] = 1663
|
|
431
|
+
pushed: typing.ClassVar[bool] = True
|
|
432
|
+
|
|
433
|
+
_connection: 'interfaces.IConnection'
|
|
434
|
+
_module: int
|
|
435
|
+
_port: int
|
|
436
|
+
_flow_xindex: int
|
|
437
|
+
|
|
438
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
439
|
+
on_off: OnOff = field(XmpByte())
|
|
440
|
+
"""coded byte, enables/disables shaper."""
|
|
441
|
+
mode: PolicerMode = field(XmpByte())
|
|
442
|
+
"""coded byte, sets shaper mode."""
|
|
443
|
+
cir: int = field(XmpInt())
|
|
444
|
+
"""integer, shaper committed information rate in units of 100 kbps (range 0 to 1000000), default is 0."""
|
|
445
|
+
cbs: int = field(XmpInt())
|
|
446
|
+
"""integer, shaper committed burst size in bytes (range 0 to 4194304), default is 0."""
|
|
447
|
+
buffer_size: int = field(XmpInt())
|
|
448
|
+
"""integer, shaper buffer size in bytes (range 0 to 2097152), default is 0."""
|
|
449
|
+
|
|
450
|
+
class SetDataAttr(RequestBodyStruct):
|
|
451
|
+
on_off: OnOff = field(XmpByte())
|
|
452
|
+
"""coded byte, enables/disables shaper."""
|
|
453
|
+
mode: PolicerMode = field(XmpByte())
|
|
454
|
+
"""coded byte, sets shaper mode."""
|
|
455
|
+
cir: int = field(XmpInt())
|
|
456
|
+
"""integer, shaper committed information rate in units of 100 kbps (range 0 to 1000000), default is 0."""
|
|
457
|
+
cbs: int = field(XmpInt())
|
|
458
|
+
"""integer, shaper committed burst size in bytes (range 0 to 4194304), default is 0."""
|
|
459
|
+
buffer_size: int = field(XmpInt())
|
|
460
|
+
"""integer, shaper buffer size in bytes (range 0 to 2097152), default is 0."""
|
|
461
|
+
|
|
462
|
+
def get(self) -> Token[GetDataAttr]:
|
|
463
|
+
"""Get the bandwidth shaper configuration.
|
|
464
|
+
|
|
465
|
+
:return: the bandwidth shaper configuration, including on/off, mode, CIR, CBS, and shaper buffer size.
|
|
466
|
+
:rtype: PE_BANDSHAPER.GetDataAttr
|
|
467
|
+
"""
|
|
468
|
+
|
|
469
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
470
|
+
|
|
471
|
+
def set(self, on_off: OnOff, mode: PolicerMode, cir: int, cbs: int, buffer_size: int) -> Token[None]:
|
|
472
|
+
"""Set the bandwidth shaper configuration.
|
|
473
|
+
|
|
474
|
+
:param on_off: enables/disables shaper
|
|
475
|
+
:type on_off: OnOff
|
|
476
|
+
:param mode: shaper mode
|
|
477
|
+
:type mode: PolicerMode
|
|
478
|
+
:param cir: shaper committed information rate in units of 100 kbps (range 0 to 1000000), default is 0.
|
|
479
|
+
:type cir: int
|
|
480
|
+
:param cbs: shaper committed burst size in bytes (range 0 to 4194304), default is 0.
|
|
481
|
+
:type cbs: int
|
|
482
|
+
:param buffer_size: shaper buffer size in bytes (range 0 to 2097152), default is 0.
|
|
483
|
+
:type buffer_size: int
|
|
484
|
+
"""
|
|
485
|
+
|
|
486
|
+
return Token(
|
|
487
|
+
self._connection,
|
|
488
|
+
build_set_request(
|
|
489
|
+
self,
|
|
490
|
+
module=self._module,
|
|
491
|
+
port=self._port,
|
|
492
|
+
indices=[self._flow_xindex],
|
|
493
|
+
on_off=on_off,
|
|
494
|
+
mode=mode,
|
|
495
|
+
cir=cir,
|
|
496
|
+
cbs=cbs,
|
|
497
|
+
buffer_size=buffer_size
|
|
498
|
+
)
|
|
499
|
+
)
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
@register_command
|
|
503
|
+
@dataclass
|
|
504
|
+
class PE_DROPTOTAL:
|
|
505
|
+
"""
|
|
506
|
+
Obtains statistics concerning all the packets dropped between this receive port and its partner TX port.
|
|
507
|
+
"""
|
|
508
|
+
|
|
509
|
+
code: typing.ClassVar[int] = 1750
|
|
510
|
+
pushed: typing.ClassVar[bool] = False
|
|
511
|
+
|
|
512
|
+
_connection: 'interfaces.IConnection'
|
|
513
|
+
_module: int
|
|
514
|
+
_port: int
|
|
515
|
+
|
|
516
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
517
|
+
pkt_drop_count_total: int = field(XmpLong())
|
|
518
|
+
"""long integer, total number of packets dropped in all flows."""
|
|
519
|
+
pkt_drop_count_programmed: int = field(XmpLong())
|
|
520
|
+
"""long integer, total number of packets dropped as programmed in all flows."""
|
|
521
|
+
pkt_drop_count_bandwidth: int = field(XmpLong())
|
|
522
|
+
"""long integer, total number of packets dropped due to bandwidth control in all flows."""
|
|
523
|
+
pkt_drop_count_other: int = field(XmpLong())
|
|
524
|
+
"""long integer, total number of packets dropped for other reasons in all flows."""
|
|
525
|
+
pkt_drop_ratio_total: int = field(XmpLong())
|
|
526
|
+
"""long integer, ratio of number of packets dropped in all flows, expressed in ppm."""
|
|
527
|
+
pkt_drop_ratio_programmed: int = field(XmpLong())
|
|
528
|
+
"""long integer, ratio of number of packets dropped as programmed in all flows, expressed in ppm."""
|
|
529
|
+
pkt_drop_ratio_bandwidth: int = field(XmpLong())
|
|
530
|
+
"""long integer, ratio of number of packets dropped due to bandwidth control in all flows, expressed in ppm."""
|
|
531
|
+
pkt_drop_ratio_other: int = field(XmpLong())
|
|
532
|
+
"""long integer, ratio of number of packets dropped for other reasons in all flows, expressed in ppm."""
|
|
533
|
+
|
|
534
|
+
def get(self) -> Token[GetDataAttr]:
|
|
535
|
+
"""Get statistics concerning all the packets dropped between this receive port and its partner TX port.
|
|
536
|
+
|
|
537
|
+
:return:
|
|
538
|
+
total number of packets dropped in all flows,
|
|
539
|
+
total number of packets dropped as programmed in all flows,
|
|
540
|
+
total number of packets dropped due to bandwidth control in all flows,
|
|
541
|
+
total number of packets dropped for other reasons in all flows,
|
|
542
|
+
ratio of number of packets dropped in all flows, expressed in ppm,
|
|
543
|
+
ratio of number of packets dropped as programmed in all flows, expressed in ppm,
|
|
544
|
+
ratio of number of packets dropped due to bandwidth control in all flows, expressed in ppm,
|
|
545
|
+
ratio of number of packets dropped for other reasons in all flows, expressed in ppm.
|
|
546
|
+
:rtype: PE_DROPTOTAL.GetDataAttr
|
|
547
|
+
"""
|
|
548
|
+
|
|
549
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
@register_command
|
|
553
|
+
@dataclass
|
|
554
|
+
class PE_LATENCYTOTAL:
|
|
555
|
+
"""
|
|
556
|
+
Obtains statistics concerning all the packets delayed this receive port and its partner TX port.
|
|
557
|
+
"""
|
|
558
|
+
|
|
559
|
+
code: typing.ClassVar[int] = 1751
|
|
560
|
+
pushed: typing.ClassVar[bool] = False
|
|
561
|
+
|
|
562
|
+
_connection: 'interfaces.IConnection'
|
|
563
|
+
_module: int
|
|
564
|
+
_port: int
|
|
565
|
+
|
|
566
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
567
|
+
pkt_count: int = field(XmpLong())
|
|
568
|
+
"""long integer, number of packets delayed in all flows."""
|
|
569
|
+
ratio: int = field(XmpLong())
|
|
570
|
+
"""long integer, ratio of number of packets delayed in all flows, expressed in ppm."""
|
|
571
|
+
|
|
572
|
+
def get(self) -> Token[GetDataAttr]:
|
|
573
|
+
"""Get statistics concerning all the packets delayed this receive port and its
|
|
574
|
+
partner TX port.
|
|
575
|
+
|
|
576
|
+
:return: number of packets delayed in all flows, and ratio of number of packets delayed in all flows, expressed in ppm.
|
|
577
|
+
:rtype: PE_LATENCYTOTAL.GetDataAttr
|
|
578
|
+
"""
|
|
579
|
+
|
|
580
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
@register_command
|
|
584
|
+
@dataclass
|
|
585
|
+
class PE_DUPTOTAL:
|
|
586
|
+
"""
|
|
587
|
+
Obtains statistics concerning all the packets duplicated between this receive port and its partner TX port.
|
|
588
|
+
"""
|
|
589
|
+
|
|
590
|
+
code: typing.ClassVar[int] = 1752
|
|
591
|
+
pushed: typing.ClassVar[bool] = False
|
|
592
|
+
|
|
593
|
+
_connection: 'interfaces.IConnection'
|
|
594
|
+
_module: int
|
|
595
|
+
_port: int
|
|
596
|
+
|
|
597
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
598
|
+
pkt_count: int = field(XmpLong())
|
|
599
|
+
"""long integer, number of packets duplicated in all flows."""
|
|
600
|
+
ratio: int = field(XmpLong())
|
|
601
|
+
"""long integer, ratio of number of packets duplicated in all flows, expressed in ppm."""
|
|
602
|
+
|
|
603
|
+
def get(self) -> Token[GetDataAttr]:
|
|
604
|
+
"""Get statistics concerning all the packets duplicated between this receive
|
|
605
|
+
port and its partner TX port.
|
|
606
|
+
|
|
607
|
+
:return: number of packets duplicated in all flows, ratio of number of packets duplicated in all flows, expressed in ppm.
|
|
608
|
+
:rtype: PE_DUPTOTAL.GetDataAttr
|
|
609
|
+
"""
|
|
610
|
+
|
|
611
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
@register_command
|
|
615
|
+
@dataclass
|
|
616
|
+
class PE_MISTOTAL:
|
|
617
|
+
"""
|
|
618
|
+
Obtains statistics concerning all the packets mis-ordered between this receive
|
|
619
|
+
port and its partner TX port.
|
|
620
|
+
"""
|
|
621
|
+
|
|
622
|
+
code: typing.ClassVar[int] = 1753
|
|
623
|
+
pushed: typing.ClassVar[bool] = False
|
|
624
|
+
|
|
625
|
+
_connection: 'interfaces.IConnection'
|
|
626
|
+
_module: int
|
|
627
|
+
_port: int
|
|
628
|
+
|
|
629
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
630
|
+
pkt_count: int = field(XmpLong())
|
|
631
|
+
"""long integer, number of packets mis-ordered in all flows."""
|
|
632
|
+
ratio: int = field(XmpLong())
|
|
633
|
+
"""long integer, number of packets mis-ordered in all flows, expressed in ppm."""
|
|
634
|
+
|
|
635
|
+
def get(self) -> Token[GetDataAttr]:
|
|
636
|
+
"""Get statistics concerning all the packets mis-ordered between this receive port and its partner TX port.
|
|
637
|
+
|
|
638
|
+
:return: number of packets mis-ordered in all flows, number of packets mis-ordered in all flows, expressed in ppm.
|
|
639
|
+
:rtype: PE_MISTOTAL.GetDataAttr
|
|
640
|
+
"""
|
|
641
|
+
|
|
642
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
@register_command
|
|
646
|
+
@dataclass
|
|
647
|
+
class PE_CORTOTAL:
|
|
648
|
+
"""
|
|
649
|
+
Obtains statistics concerning all the packets corrupted on between this receive port and its partner TX port.
|
|
650
|
+
"""
|
|
651
|
+
|
|
652
|
+
code: typing.ClassVar[int] = 1754
|
|
653
|
+
pushed: typing.ClassVar[bool] = False
|
|
654
|
+
|
|
655
|
+
_connection: 'interfaces.IConnection'
|
|
656
|
+
_module: int
|
|
657
|
+
_port: int
|
|
658
|
+
|
|
659
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
660
|
+
total_corrupted_pkt_count: int = field(XmpLong())
|
|
661
|
+
"""long integer, number of packets corrupted in all flows."""
|
|
662
|
+
fcs_corrupted_pkt_count: int = field(XmpLong())
|
|
663
|
+
"""long integer, number of packets with Ethernet FCS corrupted in all flows."""
|
|
664
|
+
ip_corrupted_pkt_count: int = field(XmpLong())
|
|
665
|
+
"""long integer, number of packets with IP header checksum corrupted in all flows."""
|
|
666
|
+
udp_corrupted_pkt_count: int = field(XmpLong())
|
|
667
|
+
"""long integer, number of packets with UDP checksum corrupted in all flows."""
|
|
668
|
+
tcp_corrupted_pkt_count: int = field(XmpLong())
|
|
669
|
+
"""long integer, number of packets with TCP checksum corrupted in all flows."""
|
|
670
|
+
total_corrupted_pkt_ratio: int = field(XmpLong())
|
|
671
|
+
"""long integer, ratio of number of packets corrupted in all flows, expressed in ppm."""
|
|
672
|
+
fcs_corrupted_pkt_ratio: int = field(XmpLong())
|
|
673
|
+
"""long integer, ratio of number of packets with Ethernet FCS corrupted in all flows, expressed in ppm."""
|
|
674
|
+
ip_corrupted_pkt_ratio: int = field(XmpLong())
|
|
675
|
+
"""long integer, ratio of number of packets with IP Header checksum corrupted in all flows, expressed in ppm."""
|
|
676
|
+
udp_corrupted_pkt_ratio: int = field(XmpLong())
|
|
677
|
+
"""long integer, ratio of number of packets with UDP checksum corrupted in all flows, expressed in ppm."""
|
|
678
|
+
tcp_corrupted_pkt_ratio: int = field(XmpLong())
|
|
679
|
+
"""long integer, ratio of number of packets with TCP checksum corrupted in all flows, expressed in ppm."""
|
|
680
|
+
|
|
681
|
+
def get(self) -> Token[GetDataAttr]:
|
|
682
|
+
"""Get statistics concerning all the packets corrupted on between this receive port and its partner TX port.
|
|
683
|
+
|
|
684
|
+
:return: number of packets corrupted in all flows;
|
|
685
|
+
number of packets with Ethernet FCS corrupted in all flows;
|
|
686
|
+
number of packets with IP header checksum corrupted in all flows;
|
|
687
|
+
number of packets with UDP checksum corrupted in all flows;
|
|
688
|
+
number of packets with TCP checksum corrupted in all flows;
|
|
689
|
+
ratio of number of packets corrupted in all flows, expressed in ppm;
|
|
690
|
+
ratio of number of packets with Ethernet FCS corrupted in all flows expressed in ppm;
|
|
691
|
+
ratio of number of packets with IP Header checksum corrupted in all flows, expressed in ppm;
|
|
692
|
+
ratio of number of packets with UDP checksum corrupted in all flows, expressed in ppm;
|
|
693
|
+
ratio of number of packets with TCP checksum corrupted in all flows, expressed in ppm
|
|
694
|
+
:rtype: PE_CORTOTAL.GetDataAttr
|
|
695
|
+
"""
|
|
696
|
+
|
|
697
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
@register_command
|
|
701
|
+
@dataclass
|
|
702
|
+
class PE_JITTERTOTAL:
|
|
703
|
+
"""
|
|
704
|
+
Obtains statistics concerning all the packets jittered between this receive port
|
|
705
|
+
and its partner TX port.
|
|
706
|
+
"""
|
|
707
|
+
|
|
708
|
+
code: typing.ClassVar[int] = 1755
|
|
709
|
+
pushed: typing.ClassVar[bool] = False
|
|
710
|
+
|
|
711
|
+
_connection: 'interfaces.IConnection'
|
|
712
|
+
_module: int
|
|
713
|
+
_port: int
|
|
714
|
+
|
|
715
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
716
|
+
pkt_count: int = field(XmpLong())
|
|
717
|
+
"""long integer, number of packets jittered in all flows."""
|
|
718
|
+
ratio: int = field(XmpLong())
|
|
719
|
+
"""long integer, ratio of number of packets jittered in all flows expressed in ppm."""
|
|
720
|
+
|
|
721
|
+
def get(self) -> Token[GetDataAttr]:
|
|
722
|
+
"""Get statistics concerning all the packets jittered between this receive port
|
|
723
|
+
and its partner TX port.
|
|
724
|
+
|
|
725
|
+
:return: number of packets jittered in all flows, ratio of number of packets jittered in all flows expressed in ppm.
|
|
726
|
+
:rtype: PE_JITTERTOTAL.GetDataAttr
|
|
727
|
+
"""
|
|
728
|
+
|
|
729
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
730
|
+
|
|
731
|
+
|
|
732
|
+
@register_command
|
|
733
|
+
@dataclass
|
|
734
|
+
class PE_CLEAR:
|
|
735
|
+
"""
|
|
736
|
+
Clear all the impairment (duplicate, drop, mis-ordered, corrupted, latency and
|
|
737
|
+
jitter) statistics for a Chimera port and flows on the port. The byte and packet
|
|
738
|
+
counts will restart at zero.
|
|
739
|
+
"""
|
|
740
|
+
|
|
741
|
+
code: typing.ClassVar[int] = 1756
|
|
742
|
+
pushed: typing.ClassVar[bool] = False
|
|
743
|
+
|
|
744
|
+
_connection: 'interfaces.IConnection'
|
|
745
|
+
_module: int
|
|
746
|
+
_port: int
|
|
747
|
+
|
|
748
|
+
class SetDataAttr(RequestBodyStruct):
|
|
749
|
+
pass
|
|
750
|
+
|
|
751
|
+
def set(self) -> Token[None]:
|
|
752
|
+
"""Clear all the impairment (duplicate, drop, mis-ordered, corrupted, latency and
|
|
753
|
+
jitter) statistics for a Chimera port and flows on the port. The byte and packet
|
|
754
|
+
counts will restart at zero.
|
|
755
|
+
"""
|
|
756
|
+
|
|
757
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port))
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
@register_command
|
|
761
|
+
@dataclass
|
|
762
|
+
class PE_FLOWDROPTOTAL:
|
|
763
|
+
"""
|
|
764
|
+
Obtains statistics concerning all the packets dropped in a flow between this receive port and its partner TX port.
|
|
765
|
+
"""
|
|
766
|
+
|
|
767
|
+
code: typing.ClassVar[int] = 1770
|
|
768
|
+
pushed: typing.ClassVar[bool] = False
|
|
769
|
+
|
|
770
|
+
_connection: 'interfaces.IConnection'
|
|
771
|
+
_module: int
|
|
772
|
+
_port: int
|
|
773
|
+
_flow_xindex: int
|
|
774
|
+
|
|
775
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
776
|
+
pkt_drop_count_total: int = field(XmpLong())
|
|
777
|
+
"""long integer, total number of packets dropped for the flow."""
|
|
778
|
+
pkt_drop_count_programmed: int = field(XmpLong())
|
|
779
|
+
"""long integer, total number of packets dropped as programmed for the flow."""
|
|
780
|
+
pkt_drop_count_bandwidth: int = field(XmpLong())
|
|
781
|
+
"""long integer, total number of packets dropped due to bandwidth control for the flow."""
|
|
782
|
+
pkt_drop_count_other: int = field(XmpLong())
|
|
783
|
+
"""long integer, total number of packets dropped for other reasons for the flow."""
|
|
784
|
+
pkt_drop_ratio_total: int = field(XmpLong())
|
|
785
|
+
"""long integer, ratio of number of packets dropped for the flow, expressed in ppm."""
|
|
786
|
+
pkt_drop_ratio_programmed: int = field(XmpLong())
|
|
787
|
+
"""long integer, ratio of number of packets dropped as programmed for the flow, expressed in ppm."""
|
|
788
|
+
pkt_drop_ratio_bandwidth: int = field(XmpLong())
|
|
789
|
+
"""long integer, ratio of number of packets dropped due to bandwidth control for the flow, expressed in ppm."""
|
|
790
|
+
pkt_drop_ratio_other: int = field(XmpLong())
|
|
791
|
+
"""long integer, ratio of number of packets dropped for other reasons for the flow, expressed in ppm."""
|
|
792
|
+
|
|
793
|
+
def get(self) -> Token[GetDataAttr]:
|
|
794
|
+
"""Get statistics concerning all the packets dropped in a flow between this receive port and its partner TX port.
|
|
795
|
+
|
|
796
|
+
:return:
|
|
797
|
+
total number of packets dropped for the flow,
|
|
798
|
+
total number of packets dropped as programmed for the flow,
|
|
799
|
+
total number of packets dropped due to bandwidth control for the flow,
|
|
800
|
+
total number of packets dropped for other reasons for the flow,
|
|
801
|
+
ratio of number of packets dropped for the flow, expressed in ppm,
|
|
802
|
+
ratio of number of packets dropped as programmed for the flow, expressed in ppm,
|
|
803
|
+
ratio of number of packets dropped due to bandwidth control for the flow, expressed in ppm,
|
|
804
|
+
ratio of number of packets dropped for other reasons for the flow, expressed in ppm.
|
|
805
|
+
:rtype: PE_FLOWDROPTOTAL.GetDataAttr
|
|
806
|
+
"""
|
|
807
|
+
|
|
808
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
@register_command
|
|
812
|
+
@dataclass
|
|
813
|
+
class PE_FLOWLATENCYTOTAL:
|
|
814
|
+
"""
|
|
815
|
+
Obtains statistics concerning all the packets delayed between this receive port and its partner TX port.
|
|
816
|
+
"""
|
|
817
|
+
|
|
818
|
+
code: typing.ClassVar[int] = 1771
|
|
819
|
+
pushed: typing.ClassVar[bool] = False
|
|
820
|
+
|
|
821
|
+
_connection: 'interfaces.IConnection'
|
|
822
|
+
_module: int
|
|
823
|
+
_port: int
|
|
824
|
+
_flow_xindex: int
|
|
825
|
+
|
|
826
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
827
|
+
pkt_count: int = field(XmpLong())
|
|
828
|
+
"""long integer, number of packets delayed in the flow."""
|
|
829
|
+
ratio: int = field(XmpLong())
|
|
830
|
+
"""long integer, ratio of number of packets delayed in the flow, expressed in ppm."""
|
|
831
|
+
|
|
832
|
+
def get(self) -> Token[GetDataAttr]:
|
|
833
|
+
"""Get statistics concerning all the packets delayed between this receive port and its partner TX port.
|
|
834
|
+
|
|
835
|
+
:return: number of packets delayed in the flow, ratio of number of packets delayed in the flow, expressed in ppm.
|
|
836
|
+
:rtype: PE_FLOWLATENCYTOTAL.GetDataAttr
|
|
837
|
+
"""
|
|
838
|
+
|
|
839
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
@register_command
|
|
843
|
+
@dataclass
|
|
844
|
+
class PE_FLOWDUPTOTAL:
|
|
845
|
+
"""
|
|
846
|
+
Obtains statistics concerning all the packets duplicated in a flow between this receive port and its partner TX port.
|
|
847
|
+
"""
|
|
848
|
+
|
|
849
|
+
code: typing.ClassVar[int] = 1772
|
|
850
|
+
pushed: typing.ClassVar[bool] = False
|
|
851
|
+
|
|
852
|
+
_connection: 'interfaces.IConnection'
|
|
853
|
+
_module: int
|
|
854
|
+
_port: int
|
|
855
|
+
_flow_xindex: int
|
|
856
|
+
|
|
857
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
858
|
+
pkt_count: int = field(XmpLong())
|
|
859
|
+
"""long integer, number of packets duplicated for the flow."""
|
|
860
|
+
ratio: int = field(XmpLong())
|
|
861
|
+
"""long integer, ratio of number of packets duplicated for the flow - expressed in ppm."""
|
|
862
|
+
|
|
863
|
+
def get(self) -> Token[GetDataAttr]:
|
|
864
|
+
"""Get statistics concerning all the packets duplicated in a flow between this receive port and its partner TX port.
|
|
865
|
+
|
|
866
|
+
:return: number of packets duplicated for the flow, ratio of number of packets duplicated for the flow - expressed in ppm.
|
|
867
|
+
:rtype: PE_FLOWDUPTOTAL.GetDataAttr
|
|
868
|
+
"""
|
|
869
|
+
|
|
870
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
@register_command
|
|
874
|
+
@dataclass
|
|
875
|
+
class PE_FLOWMISTOTAL:
|
|
876
|
+
"""
|
|
877
|
+
Obtains statistics concerning all the packets mis-ordered in a flow between this receive port and its partner TX port.
|
|
878
|
+
"""
|
|
879
|
+
|
|
880
|
+
code: typing.ClassVar[int] = 1773
|
|
881
|
+
pushed: typing.ClassVar[bool] = False
|
|
882
|
+
|
|
883
|
+
_connection: 'interfaces.IConnection'
|
|
884
|
+
_module: int
|
|
885
|
+
_port: int
|
|
886
|
+
_flow_xindex: int
|
|
887
|
+
|
|
888
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
889
|
+
pkt_count: int = field(XmpLong())
|
|
890
|
+
"""long integer, number of packets mis-ordered for the flow."""
|
|
891
|
+
ratio: int = field(XmpLong())
|
|
892
|
+
"""long integer, ratio of number of packets, expressed in ppm."""
|
|
893
|
+
|
|
894
|
+
def get(self) -> Token[GetDataAttr]:
|
|
895
|
+
"""Get statistics concerning all the packets mis-ordered in a flow between this receive port and its partner TX port.
|
|
896
|
+
|
|
897
|
+
:return: number of packets mis-ordered for the flow, ratio of number of packets, expressed in ppm.
|
|
898
|
+
:rtype: PE_FLOWMISTOTAL.GetDataAttr
|
|
899
|
+
"""
|
|
900
|
+
|
|
901
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
@register_command
|
|
905
|
+
@dataclass
|
|
906
|
+
class PE_FLOWCORTOTAL:
|
|
907
|
+
"""
|
|
908
|
+
Obtains statistics concerning all the packets corrupted in a flow between this receive port and its partner TX port.
|
|
909
|
+
"""
|
|
910
|
+
|
|
911
|
+
code: typing.ClassVar[int] = 1774
|
|
912
|
+
pushed: typing.ClassVar[bool] = False
|
|
913
|
+
|
|
914
|
+
_connection: 'interfaces.IConnection'
|
|
915
|
+
_module: int
|
|
916
|
+
_port: int
|
|
917
|
+
_flow_xindex: int
|
|
918
|
+
|
|
919
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
920
|
+
total_corrupted_pkt_count: int = field(XmpLong())
|
|
921
|
+
"""long integer, number of packets corrupted for the flow."""
|
|
922
|
+
fcs_corrupted_pkt_count: int = field(XmpLong())
|
|
923
|
+
"""long integer, number of packets with Ethernet FCS corrupted for the flow."""
|
|
924
|
+
ip_corrupted_pkt_count: int = field(XmpLong())
|
|
925
|
+
"""long integer, number of packets with IP header checksum corrupted for the flow."""
|
|
926
|
+
udp_corrupted_pkt_count: int = field(XmpLong())
|
|
927
|
+
"""long integer, number of packets with UDP checksum corrupted for the flow."""
|
|
928
|
+
tcp_corrupted_pkt_count: int = field(XmpLong())
|
|
929
|
+
"""long integer, number of packets with TCP checksum corrupted for the flow."""
|
|
930
|
+
total_corrupted_pkt_ratio: int = field(XmpLong())
|
|
931
|
+
"""long integer, ratio of number of packets corrupted for the flow expressed in ppm."""
|
|
932
|
+
fcs_corrupted_pkt_ratio: int = field(XmpLong())
|
|
933
|
+
"""long integer, ratio of number of packets with Ethernet FCS corrupted for the flow expressed in ppm."""
|
|
934
|
+
ip_corrupted_pkt_ratio: int = field(XmpLong())
|
|
935
|
+
"""long integer, ratio of number of packets with IP Header checksum corrupted for the flow expressed in ppm."""
|
|
936
|
+
udp_corrupted_pkt_ratio: int = field(XmpLong())
|
|
937
|
+
"""long integer, ratio of number of packets with UDP checksum corrupted for the flow expressed in ppm."""
|
|
938
|
+
tcp_corrupted_pkt_ratio: int = field(XmpLong())
|
|
939
|
+
"""long integer, ratio of number of packets with TCP checksum corrupted for the flow expressed in ppm."""
|
|
940
|
+
|
|
941
|
+
def get(self) -> Token[GetDataAttr]:
|
|
942
|
+
"""Get statistics concerning all the packets corrupted in a flow between this receive port and its partner TX port.
|
|
943
|
+
|
|
944
|
+
:return:
|
|
945
|
+
number of packets corrupted for the flow,
|
|
946
|
+
number of packets with Ethernet FCS corrupted for the flow,
|
|
947
|
+
number of packets with IP header checksum corrupted for the flow,
|
|
948
|
+
number of packets with UDP checksum corrupted for the flow,
|
|
949
|
+
number of packets with TCP checksum corrupted for the flow,
|
|
950
|
+
ratio of number of packets corrupted for the flow expressed in ppm,
|
|
951
|
+
ratio of number of packets with Ethernet FCS corrupted for the flow expressed in ppm,
|
|
952
|
+
ratio of number of packets with IP Header checksum corrupted for the flow expressed in ppm,
|
|
953
|
+
ratio of number of packets with UDP checksum corrupted for the flow expressed in ppm,
|
|
954
|
+
ratio of number of packets with TCP checksum corrupted for the flow expressed in ppm.
|
|
955
|
+
:rtype: PE_FLOWCORTOTAL.GetDataAttr
|
|
956
|
+
"""
|
|
957
|
+
|
|
958
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
@register_command
|
|
962
|
+
@dataclass
|
|
963
|
+
class PE_FLOWJITTERTOTAL:
|
|
964
|
+
"""
|
|
965
|
+
Obtains statistics concerning all the packets jittered in a flow between this receive port and its partner TX port.
|
|
966
|
+
"""
|
|
967
|
+
|
|
968
|
+
code: typing.ClassVar[int] = 1775
|
|
969
|
+
pushed: typing.ClassVar[bool] = False
|
|
970
|
+
|
|
971
|
+
_connection: 'interfaces.IConnection'
|
|
972
|
+
_module: int
|
|
973
|
+
_port: int
|
|
974
|
+
_flow_xindex: int
|
|
975
|
+
|
|
976
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
977
|
+
pkt_count: int = field(XmpLong())
|
|
978
|
+
"""long integer, number of packets jittered in the flow."""
|
|
979
|
+
ratio: int = field(XmpLong())
|
|
980
|
+
"""long integer, ratio of number of packets jittered in the flow, expressed in ppm."""
|
|
981
|
+
|
|
982
|
+
def get(self) -> Token[GetDataAttr]:
|
|
983
|
+
"""Get statistics concerning all the packets jittered in a flow between this receive port and its partner TX port.
|
|
984
|
+
|
|
985
|
+
:return: number of packets jittered in the flow, ratio of number of packets jittered in the flow, expressed in ppm
|
|
986
|
+
:rtype: PE_FLOWJITTERTOTAL.GetDataAttr
|
|
987
|
+
"""
|
|
988
|
+
|
|
989
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
@register_command
|
|
993
|
+
@dataclass
|
|
994
|
+
class PE_FLOWCLEAR:
|
|
995
|
+
"""
|
|
996
|
+
Clear all the impairment (duplicate, drop, mis-ordered, corrupted, latency and
|
|
997
|
+
jitter) statistics on a particular flow on the port. The byte and packet counts
|
|
998
|
+
will restart at zero.
|
|
999
|
+
"""
|
|
1000
|
+
|
|
1001
|
+
code: typing.ClassVar[int] = 1776
|
|
1002
|
+
pushed: typing.ClassVar[bool] = False
|
|
1003
|
+
|
|
1004
|
+
_connection: 'interfaces.IConnection'
|
|
1005
|
+
_module: int
|
|
1006
|
+
_port: int
|
|
1007
|
+
_flow_xindex: int
|
|
1008
|
+
|
|
1009
|
+
class SetDataAttr(RequestBodyStruct):
|
|
1010
|
+
pass
|
|
1011
|
+
|
|
1012
|
+
def set(self) -> Token[None]:
|
|
1013
|
+
"""Clear all the impairment (duplicate, drop, mis-ordered, corrupted, latency and
|
|
1014
|
+
jitter) statistics on a particular flow on the port. The byte and packet counts
|
|
1015
|
+
will restart at zero.
|
|
1016
|
+
"""
|
|
1017
|
+
|
|
1018
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._flow_xindex]))
|