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,178 @@
|
|
|
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
|
+
XmpInt,
|
|
18
|
+
XmpSequence,
|
|
19
|
+
)
|
|
20
|
+
from .enums import LengthCheckType
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@register_command
|
|
24
|
+
@dataclass
|
|
25
|
+
class PL_INDICES:
|
|
26
|
+
"""
|
|
27
|
+
The full list of which length terms are defined for a port. These are the sub-
|
|
28
|
+
index values that are used for the parameters defining the length-based matching
|
|
29
|
+
of packets received for the port. Setting the value of this parameter creates a
|
|
30
|
+
new empty length term for each value that is not already in use, and deletes
|
|
31
|
+
each length term that is not mentioned in the list. The same can be accomplished
|
|
32
|
+
one- length-term-at-a-time using the PL_CREATE and PL_DELETE commands.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
code: typing.ClassVar[int] = 207
|
|
36
|
+
pushed: typing.ClassVar[bool] = True
|
|
37
|
+
|
|
38
|
+
_connection: 'interfaces.IConnection'
|
|
39
|
+
_module: int
|
|
40
|
+
_port: int
|
|
41
|
+
|
|
42
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
43
|
+
length_term_xindices: typing.List[int] = field(XmpSequence(types_chunk=[XmpInt()]))
|
|
44
|
+
"""list of integers, the sub-index of a length term definition for the port."""
|
|
45
|
+
|
|
46
|
+
class SetDataAttr(RequestBodyStruct):
|
|
47
|
+
length_term_xindices: typing.List[int] = field(XmpSequence(types_chunk=[XmpInt()]))
|
|
48
|
+
"""list of integers, the sub-index of a length term definition for the port."""
|
|
49
|
+
|
|
50
|
+
def get(self) -> Token[GetDataAttr]:
|
|
51
|
+
"""Get the full list of which length terms are defined for a port.
|
|
52
|
+
|
|
53
|
+
:return: the full list of which length terms are defined for a port
|
|
54
|
+
:rtype: PL_INDICES.GetDataAttr
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
58
|
+
|
|
59
|
+
def set(self, length_term_xindices: typing.List[int]) -> Token[None]:
|
|
60
|
+
"""Create a new empty length term for each value that is not already in use, and deletes each length term that is not mentioned in the list.
|
|
61
|
+
|
|
62
|
+
:param length_term_xindices: the list of indices of length terms to be created on a port.
|
|
63
|
+
:type length_term_xindices: typing.List[int]
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, length_term_xindices=length_term_xindices))
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@register_command
|
|
70
|
+
@dataclass
|
|
71
|
+
class PL_CREATE:
|
|
72
|
+
"""
|
|
73
|
+
Creates an empty length term definition with the specified sub-index value.
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
code: typing.ClassVar[int] = 208
|
|
77
|
+
pushed: typing.ClassVar[bool] = False
|
|
78
|
+
|
|
79
|
+
_connection: 'interfaces.IConnection'
|
|
80
|
+
_module: int
|
|
81
|
+
_port: int
|
|
82
|
+
_length_term_xindex: int
|
|
83
|
+
|
|
84
|
+
class SetDataAttr(RequestBodyStruct):
|
|
85
|
+
pass
|
|
86
|
+
|
|
87
|
+
def set(self) -> Token[None]:
|
|
88
|
+
"""Creates an empty length term definition with the specified sub-index value.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._length_term_xindex]))
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@register_command
|
|
95
|
+
@dataclass
|
|
96
|
+
class PL_DELETE:
|
|
97
|
+
"""
|
|
98
|
+
Deletes the length term definition with the specified sub-index value. A length
|
|
99
|
+
term cannot be deleted while it is used in the condition of any filter for the
|
|
100
|
+
port.
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
code: typing.ClassVar[int] = 209
|
|
104
|
+
pushed: typing.ClassVar[bool] = False
|
|
105
|
+
|
|
106
|
+
_connection: 'interfaces.IConnection'
|
|
107
|
+
_module: int
|
|
108
|
+
_port: int
|
|
109
|
+
_length_term_xindex: int
|
|
110
|
+
|
|
111
|
+
class SetDataAttr(RequestBodyStruct):
|
|
112
|
+
pass
|
|
113
|
+
|
|
114
|
+
def set(self) -> Token[None]:
|
|
115
|
+
"""Deletes the length term definition with the specified sub-index value.
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._length_term_xindex]))
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
@register_command
|
|
122
|
+
@dataclass
|
|
123
|
+
class PL_LENGTH:
|
|
124
|
+
"""
|
|
125
|
+
The specification for a length-based check that is applied on the packets
|
|
126
|
+
received on the port.
|
|
127
|
+
"""
|
|
128
|
+
|
|
129
|
+
code: typing.ClassVar[int] = 210
|
|
130
|
+
pushed: typing.ClassVar[bool] = True
|
|
131
|
+
|
|
132
|
+
_connection: 'interfaces.IConnection'
|
|
133
|
+
_module: int
|
|
134
|
+
_port: int
|
|
135
|
+
_length_term_xindex: int
|
|
136
|
+
|
|
137
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
138
|
+
length_check_type: LengthCheckType = field(XmpInt())
|
|
139
|
+
"""coded integer, whether to test for shorter-than or longer-than."""
|
|
140
|
+
size: int = field(XmpInt())
|
|
141
|
+
"""integer, the value to compare the packet length against."""
|
|
142
|
+
|
|
143
|
+
class SetDataAttr(RequestBodyStruct):
|
|
144
|
+
length_check_type: LengthCheckType = field(XmpInt())
|
|
145
|
+
"""coded integer, whether to test for shorter-than or longer-than."""
|
|
146
|
+
size: int = field(XmpInt())
|
|
147
|
+
"""integer, the value to compare the packet length against."""
|
|
148
|
+
|
|
149
|
+
def get(self) -> Token[GetDataAttr]:
|
|
150
|
+
"""Get the configuration of a length-based check that is applied on the packets received on a port.
|
|
151
|
+
|
|
152
|
+
:return: whether to test for shorter-than or longer-than, and the value to compare the packet length against
|
|
153
|
+
:rtype: PL_LENGTH.GetDataAttr
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._length_term_xindex]))
|
|
157
|
+
|
|
158
|
+
def set(self, length_check_type: LengthCheckType, size: int) -> Token[None]:
|
|
159
|
+
"""Set the configuration of a length-based check that is applied on the packets received on a port.
|
|
160
|
+
|
|
161
|
+
:param length_check_type: whether to test for shorter-than or longer-than
|
|
162
|
+
:type length_check_type: LengthCheckType
|
|
163
|
+
:param size: the value to compare the packet length against
|
|
164
|
+
:type size: int
|
|
165
|
+
"""
|
|
166
|
+
|
|
167
|
+
return Token(
|
|
168
|
+
self._connection,
|
|
169
|
+
build_set_request(self, module=self._module, port=self._port, indices=[self._length_term_xindex], length_check_type=length_check_type, size=size)
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
set_at_most = functools.partialmethod(set, LengthCheckType.AT_MOST)
|
|
173
|
+
"""Set the length check to be short than or equal to the given length (at most).
|
|
174
|
+
"""
|
|
175
|
+
|
|
176
|
+
set_at_least = functools.partialmethod(set, LengthCheckType.AT_LEAST)
|
|
177
|
+
"""Set the length check to be longer than or equal to the given length (at least).
|
|
178
|
+
"""
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from xoa_driver.internals.core.builders import (
|
|
6
|
+
build_get_request,
|
|
7
|
+
build_set_request
|
|
8
|
+
)
|
|
9
|
+
from xoa_driver.internals.core import interfaces
|
|
10
|
+
from xoa_driver.internals.core.token import Token
|
|
11
|
+
from xoa_driver.internals.core.transporter.registry import register_command
|
|
12
|
+
from xoa_driver.internals.core.transporter.protocol.payload import (
|
|
13
|
+
field,
|
|
14
|
+
RequestBodyStruct,
|
|
15
|
+
ResponseBodyStruct,
|
|
16
|
+
XmpByte,
|
|
17
|
+
XmpHex,
|
|
18
|
+
XmpInt,
|
|
19
|
+
XmpSequence,
|
|
20
|
+
Hex,
|
|
21
|
+
)
|
|
22
|
+
from .enums import ProtocolOption
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@register_command
|
|
26
|
+
@dataclass
|
|
27
|
+
class PM_INDICES:
|
|
28
|
+
"""
|
|
29
|
+
The full list of which match terms are defined for a port. These are the sub-
|
|
30
|
+
index values that are used for the parameters defining the content-based
|
|
31
|
+
matching of packets received for the port. Setting the value of this parameter
|
|
32
|
+
creates a new empty match term for each value that is not already in use, and
|
|
33
|
+
deletes each match term that is not mentioned in the list. The same can be
|
|
34
|
+
accomplished one match-term-at-a-time using the PM_CREATE and PM_DELETE commands.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
code: typing.ClassVar[int] = 200
|
|
38
|
+
pushed: typing.ClassVar[bool] = True
|
|
39
|
+
|
|
40
|
+
_connection: 'interfaces.IConnection'
|
|
41
|
+
_module: int
|
|
42
|
+
_port: int
|
|
43
|
+
|
|
44
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
45
|
+
match_term_xindices: typing.List[int] = field(XmpSequence(types_chunk=[XmpInt()]))
|
|
46
|
+
"""list of integers, the sub-index of a match term definition for the port."""
|
|
47
|
+
|
|
48
|
+
class SetDataAttr(RequestBodyStruct):
|
|
49
|
+
match_term_xindices: typing.List[int] = field(XmpSequence(types_chunk=[XmpInt()]))
|
|
50
|
+
"""list of integers, the sub-index of a match term definition for the port."""
|
|
51
|
+
|
|
52
|
+
def get(self) -> Token[GetDataAttr]:
|
|
53
|
+
"""Get the full list of which match terms are defined for a port.
|
|
54
|
+
|
|
55
|
+
:return: the full list of which match terms are defined for a port
|
|
56
|
+
:rtype: PM_INDICES.GetDataAttr
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port))
|
|
60
|
+
|
|
61
|
+
def set(self, match_term_xindices: typing.List[int]) -> Token[None]:
|
|
62
|
+
"""Creates a new empty match term for each value that is not already in use, and delete each match term that is not mentioned in the list
|
|
63
|
+
|
|
64
|
+
:param match_term_xindices: the sub-index of a match term definition for the port
|
|
65
|
+
:type match_term_xindices: typing.List[int]
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, match_term_xindices=match_term_xindices))
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@register_command
|
|
72
|
+
@dataclass
|
|
73
|
+
class PM_CREATE:
|
|
74
|
+
"""
|
|
75
|
+
Creates an empty match term definition with the specified sub-index value.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
code: typing.ClassVar[int] = 201
|
|
79
|
+
pushed: typing.ClassVar[bool] = False
|
|
80
|
+
|
|
81
|
+
_connection: 'interfaces.IConnection'
|
|
82
|
+
_module: int
|
|
83
|
+
_port: int
|
|
84
|
+
_match_term_xindex: int
|
|
85
|
+
|
|
86
|
+
class SetDataAttr(RequestBodyStruct):
|
|
87
|
+
pass
|
|
88
|
+
|
|
89
|
+
def set(self) -> Token[None]:
|
|
90
|
+
"""Creates an empty match term definition with the specified sub-index value.
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex]))
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
@register_command
|
|
97
|
+
@dataclass
|
|
98
|
+
class PM_DELETE:
|
|
99
|
+
"""
|
|
100
|
+
Deletes the match term definition with the specified sub-index value. A match
|
|
101
|
+
term cannot be deleted while it is used in the condition of any filter for the
|
|
102
|
+
port.
|
|
103
|
+
"""
|
|
104
|
+
|
|
105
|
+
code: typing.ClassVar[int] = 202
|
|
106
|
+
pushed: typing.ClassVar[bool] = False
|
|
107
|
+
|
|
108
|
+
_connection: 'interfaces.IConnection'
|
|
109
|
+
_module: int
|
|
110
|
+
_port: int
|
|
111
|
+
_match_term_xindex: int
|
|
112
|
+
|
|
113
|
+
class SetDataAttr(RequestBodyStruct):
|
|
114
|
+
pass
|
|
115
|
+
|
|
116
|
+
def set(self) -> Token[None]:
|
|
117
|
+
"""Deletes the match term definition with the specified sub-index value.
|
|
118
|
+
"""
|
|
119
|
+
|
|
120
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex]))
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
@register_command
|
|
124
|
+
@dataclass
|
|
125
|
+
class PM_PROTOCOL:
|
|
126
|
+
"""
|
|
127
|
+
The protocol segments assumed on the packets received on the port. This is
|
|
128
|
+
mainly for information purposes, and helps you identify which portion of the
|
|
129
|
+
packet header is being matched. The actual value definition of the match
|
|
130
|
+
position is specified with PM_POSITION.
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
code: typing.ClassVar[int] = 203
|
|
134
|
+
pushed: typing.ClassVar[bool] = True
|
|
135
|
+
|
|
136
|
+
_connection: 'interfaces.IConnection'
|
|
137
|
+
_module: int
|
|
138
|
+
_port: int
|
|
139
|
+
_match_term_xindex: int
|
|
140
|
+
|
|
141
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
142
|
+
segments: typing.List[ProtocolOption] = field(XmpSequence(types_chunk=[XmpByte()]))
|
|
143
|
+
"""list of coded bytes, a number specifying a built-in protocol segment: Uses the same coded values as the PS_HEADERPROTOCOL parameter."""
|
|
144
|
+
|
|
145
|
+
class SetDataAttr(RequestBodyStruct):
|
|
146
|
+
segments: typing.List[ProtocolOption] = field(XmpSequence(types_chunk=[XmpByte()]))
|
|
147
|
+
"""list of coded bytes, a number specifying a built-in protocol segment: Uses the same coded values as the PS_HEADERPROTOCOL parameter."""
|
|
148
|
+
|
|
149
|
+
def get(self) -> Token[GetDataAttr]:
|
|
150
|
+
"""Get the protocol segments assumed on the packets received on the port.
|
|
151
|
+
|
|
152
|
+
:return: a number specifying a built-in protocol segment: Uses the same coded values as the PS_HEADERPROTOCOL parameter.
|
|
153
|
+
:rtype: PM_PROTOCOL.GetDataAttr
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex]))
|
|
157
|
+
|
|
158
|
+
def set(self, segments: typing.List[ProtocolOption]) -> Token[None]:
|
|
159
|
+
"""Set the protocol segments assumed on the packets received on the port.
|
|
160
|
+
|
|
161
|
+
:param segments: a number specifying a built-in protocol segment: Uses the same coded values as the PS_HEADERPROTOCOL parameter
|
|
162
|
+
:type segments: typing.List[ProtocolOption]
|
|
163
|
+
"""
|
|
164
|
+
|
|
165
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex], segments=segments))
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
@register_command
|
|
169
|
+
@dataclass
|
|
170
|
+
class PM_POSITION:
|
|
171
|
+
"""
|
|
172
|
+
The position within each received packet where content matching begins for the port.
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
code: typing.ClassVar[int] = 204
|
|
176
|
+
pushed: typing.ClassVar[bool] = True
|
|
177
|
+
|
|
178
|
+
_connection: 'interfaces.IConnection'
|
|
179
|
+
_module: int
|
|
180
|
+
_port: int
|
|
181
|
+
_match_term_xindex: int
|
|
182
|
+
|
|
183
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
184
|
+
byte_offset: int = field(XmpInt())
|
|
185
|
+
"""integer, offset from the start of the packet bytes."""
|
|
186
|
+
|
|
187
|
+
class SetDataAttr(RequestBodyStruct):
|
|
188
|
+
byte_offset: int = field(XmpInt())
|
|
189
|
+
"""integer, offset from the start of the packet bytes."""
|
|
190
|
+
|
|
191
|
+
def get(self) -> Token[GetDataAttr]:
|
|
192
|
+
"""Get the position within each received packet where content matching begins for the port.
|
|
193
|
+
|
|
194
|
+
:return: offset from the start of the packet bytes
|
|
195
|
+
:rtype: PM_POSITION.GetDataAttr
|
|
196
|
+
"""
|
|
197
|
+
|
|
198
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex]))
|
|
199
|
+
|
|
200
|
+
def set(self, byte_offset: int) -> Token[None]:
|
|
201
|
+
"""Set the position within each received packet where content matching begins for the port.
|
|
202
|
+
|
|
203
|
+
:param byte_offset: offset from the start of the packet bytes
|
|
204
|
+
:type byte_offset: int
|
|
205
|
+
"""
|
|
206
|
+
|
|
207
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex], byte_offset=byte_offset))
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
@register_command
|
|
211
|
+
@dataclass
|
|
212
|
+
class PM_MATCH:
|
|
213
|
+
"""
|
|
214
|
+
The value that must be found at the match term position for packets received on
|
|
215
|
+
the port. The mask can make certain bit positions don't-care.
|
|
216
|
+
"""
|
|
217
|
+
|
|
218
|
+
code: typing.ClassVar[int] = 205
|
|
219
|
+
pushed: typing.ClassVar[bool] = True
|
|
220
|
+
|
|
221
|
+
_connection: 'interfaces.IConnection'
|
|
222
|
+
_module: int
|
|
223
|
+
_port: int
|
|
224
|
+
_match_term_xindex: int
|
|
225
|
+
|
|
226
|
+
class GetDataAttr(ResponseBodyStruct):
|
|
227
|
+
mask: Hex = field(XmpHex(size=8))
|
|
228
|
+
"""eight hex bytes, which bits are significant in the match operation."""
|
|
229
|
+
value: Hex = field(XmpHex(size=8))
|
|
230
|
+
"""eight hex bytes, the value that must be found for the match term to be true."""
|
|
231
|
+
|
|
232
|
+
class SetDataAttr(RequestBodyStruct):
|
|
233
|
+
mask: Hex = field(XmpHex(size=8))
|
|
234
|
+
"""eight hex bytes, which bits are significant in the match operation."""
|
|
235
|
+
value: Hex = field(XmpHex(size=8))
|
|
236
|
+
"""eight hex bytes, the value that must be found for the match term to be true."""
|
|
237
|
+
|
|
238
|
+
def get(self) -> Token[GetDataAttr]:
|
|
239
|
+
"""Get the value that must be found at the match term position for packets received on the port.
|
|
240
|
+
|
|
241
|
+
:return: which bits are significant in the match operation, and the value that must be found for the match term to be true.
|
|
242
|
+
:rtype: PM_MATCH.GetDataAttr
|
|
243
|
+
"""
|
|
244
|
+
|
|
245
|
+
return Token(self._connection, build_get_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex]))
|
|
246
|
+
|
|
247
|
+
def set(self, mask: Hex, value: Hex) -> Token[None]:
|
|
248
|
+
"""Set the value that must be found at the match term position for packets received on the port.
|
|
249
|
+
|
|
250
|
+
:param mask: which bits are significant in the match operation
|
|
251
|
+
:type mask: Hex
|
|
252
|
+
:param value: the value that must be found for the match term to be true
|
|
253
|
+
:type value: Hex
|
|
254
|
+
"""
|
|
255
|
+
|
|
256
|
+
return Token(self._connection, build_set_request(self, module=self._module, port=self._port, indices=[self._match_term_xindex], mask=mask, value=value))
|