tdl-xoa-driver 1.3.0__py3-none-any.whl → 1.5.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.5.0.dist-info/METADATA +56 -0
- tdl_xoa_driver-1.5.0.dist-info/RECORD +231 -0
- xoa_driver/__init__.py +2 -2
- xoa_driver/enums.py +2 -0
- xoa_driver/exceptions.py +2 -0
- xoa_driver/functions/anlt.py +4 -2
- xoa_driver/functions/anlt_ll_debug.py +2 -0
- xoa_driver/functions/cli/__init__.py +21 -0
- xoa_driver/functions/cli/_cli_manager.py +541 -0
- xoa_driver/functions/cli/_config_block.py +334 -0
- xoa_driver/functions/cli/_socket_driver.py +111 -0
- xoa_driver/functions/cli/port_config.py +116 -0
- xoa_driver/functions/cli/testbed_config.py +179 -0
- xoa_driver/functions/cmis/__init__.py +8 -0
- xoa_driver/functions/cmis/_constants.py +25 -0
- xoa_driver/functions/cmis/_replies.py +600 -0
- xoa_driver/functions/cmis/_utils.py +49 -0
- xoa_driver/functions/cmis/cdb.py +1266 -0
- xoa_driver/functions/exceptions.py +2 -0
- xoa_driver/functions/headers.py +2 -0
- xoa_driver/functions/mgmt.py +48 -34
- xoa_driver/functions/tools.py +9 -3
- xoa_driver/hlfuncs.py +7 -3
- xoa_driver/internals/commands/c_commands.py +6 -10
- xoa_driver/internals/commands/enums.py +25 -1
- xoa_driver/internals/commands/p_commands.py +50 -12
- xoa_driver/internals/commands/pl1_commands.py +130 -73
- xoa_driver/internals/commands/pp_commands.py +44 -55
- xoa_driver/internals/commands/pr_commands.py +17 -16
- xoa_driver/internals/commands/pt_commands.py +21 -1
- xoa_driver/internals/commands/px_commands.py +1686 -6
- xoa_driver/internals/core/transporter/_request_id_counter.py +1 -1
- xoa_driver/internals/core/transporter/logger/__state_on_user.py +1 -1
- xoa_driver/internals/core/transporter/protocol/payload/__init__.py +3 -1
- xoa_driver/internals/core/transporter/protocol/payload/field.py +41 -0
- xoa_driver/internals/core/transporter/protocol/payload/types.py +19 -0
- xoa_driver/internals/exceptions/modules.py +4 -3
- xoa_driver/internals/{hli_v1 → hli}/indices/filter/base_filter.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/length_term.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/base_macsecsc.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/indices/match_term.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/port_dataset.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/indices/streams/base_stream.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/module_chimera.py +3 -3
- xoa_driver/internals/{hli_v1 → hli}/modules/module_l47.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_combi.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_d.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_e.py +1 -1
- xoa_driver/internals/hli/modules/modules_l23/family_edun.py +82 -0
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_f.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_g.py +17 -2
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_h.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_i.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_j.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_k.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_l.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_l1.py +20 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_m.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/family_n.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/module_l23_base.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_l23.py +3 -3
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_l23_genuine.py +4 -4
- xoa_driver/internals/hli/ports/port_l23/bases/port_transceiver.py +247 -0
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_transmission_statistics.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/port_chimera.py +1 -1
- xoa_driver/internals/hli/ports/port_l23/edun_l1.py +181 -0
- xoa_driver/internals/hli/ports/port_l23/family_edun.py +82 -0
- xoa_driver/internals/{hli_v2 → hli}/ports/port_l23/family_g.py +5 -0
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_l1.py +14 -8
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/port_l23ve.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/main.py +2 -2
- xoa_driver/internals/{hli_v1 → hli}/testers/l23_tester.py +1 -1
- xoa_driver/internals/{hli_v1 → hli}/testers/l47_tester.py +2 -2
- xoa_driver/internals/state_storage/modules_state.py +20 -0
- xoa_driver/internals/state_storage/testers_state.py +10 -0
- xoa_driver/lli.py +1 -0
- xoa_driver/misc.py +13 -17
- xoa_driver/modules.py +40 -22
- xoa_driver/ports.py +42 -20
- xoa_driver/testers.py +5 -7
- xoa_driver/utils.py +2 -0
- tdl_xoa_driver-1.3.0.dist-info/METADATA +0 -56
- tdl_xoa_driver-1.3.0.dist-info/RECORD +0 -325
- xoa_driver/functions/cli.py +0 -581
- xoa_driver/internals/hli_v1/ports/port_l23/bases/port_transceiver.py +0 -117
- xoa_driver/internals/hli_v1/ports/port_l23/family_g.py +0 -77
- 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 +0 -39
- xoa_driver/internals/hli_v2/indices/connection_group/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/connection_group/cg.py +0 -115
- xoa_driver/internals/hli_v2/indices/connection_group/histogram.py +0 -59
- xoa_driver/internals/hli_v2/indices/connection_group/l2.py +0 -71
- xoa_driver/internals/hli_v2/indices/connection_group/l3.py +0 -96
- xoa_driver/internals/hli_v2/indices/connection_group/raw.py +0 -148
- xoa_driver/internals/hli_v2/indices/connection_group/replay.py +0 -89
- xoa_driver/internals/hli_v2/indices/connection_group/tcp.py +0 -261
- xoa_driver/internals/hli_v2/indices/connection_group/tls.py +0 -166
- xoa_driver/internals/hli_v2/indices/connection_group/udp.py +0 -112
- xoa_driver/internals/hli_v2/indices/connection_group/user_state.py +0 -25
- xoa_driver/internals/hli_v2/indices/filter/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/filter/base_filter.py +0 -50
- xoa_driver/internals/hli_v2/indices/filter/genuine_filter.py +0 -17
- xoa_driver/internals/hli_v2/indices/length_term.py +0 -44
- xoa_driver/internals/hli_v2/indices/match_term.py +0 -49
- xoa_driver/internals/hli_v2/indices/port_dataset.py +0 -53
- xoa_driver/internals/hli_v2/indices/streams/__init__.py +0 -0
- xoa_driver/internals/hli_v2/indices/streams/base_stream.py +0 -234
- xoa_driver/internals/hli_v2/indices/streams/genuine_stream.py +0 -32
- xoa_driver/internals/hli_v2/modules/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/__interfaces.py +0 -21
- xoa_driver/internals/hli_v2/modules/base_module.py +0 -125
- xoa_driver/internals/hli_v2/modules/module_chimera.py +0 -358
- xoa_driver/internals/hli_v2/modules/module_l23ve.py +0 -58
- xoa_driver/internals/hli_v2/modules/module_l47.py +0 -230
- xoa_driver/internals/hli_v2/modules/module_l47ve.py +0 -8
- xoa_driver/internals/hli_v2/modules/modules_l23/__init__.py +0 -0
- xoa_driver/internals/hli_v2/modules/modules_l23/family_combi.py +0 -73
- xoa_driver/internals/hli_v2/modules/modules_l23/family_d.py +0 -75
- xoa_driver/internals/hli_v2/modules/modules_l23/family_e.py +0 -85
- xoa_driver/internals/hli_v2/modules/modules_l23/family_f.py +0 -144
- xoa_driver/internals/hli_v2/modules/modules_l23/family_g.py +0 -84
- xoa_driver/internals/hli_v2/modules/modules_l23/family_h.py +0 -40
- xoa_driver/internals/hli_v2/modules/modules_l23/family_i.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_j.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_k.py +0 -39
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l.py +0 -55
- xoa_driver/internals/hli_v2/modules/modules_l23/family_l1.py +0 -797
- xoa_driver/internals/hli_v2/modules/modules_l23/family_m.py +0 -25
- xoa_driver/internals/hli_v2/modules/modules_l23/family_n.py +0 -40
- xoa_driver/internals/hli_v2/modules/modules_l23/module_l23_base.py +0 -339
- xoa_driver/internals/hli_v2/ports/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/base_port.py +0 -105
- 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 +0 -64
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23.py +0 -441
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_l23_genuine.py +0 -172
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_reception_statistics.py +0 -156
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transceiver.py +0 -117
- xoa_driver/internals/hli_v2/ports/port_l23/bases/port_transmission_statistics.py +0 -59
- 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 +0 -15
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/general.py +0 -340
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/shadow.py +0 -99
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/filter_definition/working.py +0 -36
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_custom_distribution.py +0 -116
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/pe_distribution.py +0 -102
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_chimera.py +0 -113
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/port_emulation.py +0 -420
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/reception_statistics.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/chimera/transmission_statistics.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/family_combi.py +0 -36
- xoa_driver/internals/hli_v2/ports/port_l23/family_d.py +0 -49
- xoa_driver/internals/hli_v2/ports/port_l23/family_e.py +0 -96
- xoa_driver/internals/hli_v2/ports/port_l23/family_f.py +0 -144
- xoa_driver/internals/hli_v2/ports/port_l23/family_h.py +0 -60
- xoa_driver/internals/hli_v2/ports/port_l23/family_i.py +0 -66
- xoa_driver/internals/hli_v2/ports/port_l23/family_j.py +0 -53
- xoa_driver/internals/hli_v2/ports/port_l23/family_k.py +0 -58
- xoa_driver/internals/hli_v2/ports/port_l23/family_l.py +0 -67
- xoa_driver/internals/hli_v2/ports/port_l23/family_l1.py +0 -149
- xoa_driver/internals/hli_v2/ports/port_l23/family_m.py +0 -28
- xoa_driver/internals/hli_v2/ports/port_l23/fault_jkl.py +0 -22
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ghijkl.py +0 -342
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_ijkl_chimera.py +0 -50
- xoa_driver/internals/hli_v2/ports/port_l23/pcs_pma_l.py +0 -65
- xoa_driver/internals/hli_v2/ports/port_l23/port_l23ve.py +0 -81
- xoa_driver/internals/hli_v2/ports/port_l47/__init__.py +0 -0
- xoa_driver/internals/hli_v2/ports/port_l47/counters.py +0 -146
- xoa_driver/internals/hli_v2/ports/port_l47/main.py +0 -137
- xoa_driver/internals/hli_v2/ports/port_l47/packet_engine.py +0 -20
- xoa_driver/internals/hli_v2/revisions.py +0 -11
- xoa_driver/internals/hli_v2/testers/__init__.py +0 -0
- xoa_driver/internals/hli_v2/testers/_base_tester.py +0 -207
- 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 +0 -16
- xoa_driver/internals/hli_v2/testers/genuine/l_23/rest_api.py +0 -34
- xoa_driver/internals/hli_v2/testers/genuine/l_23/time_keeper.py +0 -50
- xoa_driver/internals/hli_v2/testers/genuine/l_23/upload_file.py +0 -26
- xoa_driver/internals/hli_v2/testers/genuine/management_interface.py +0 -38
- xoa_driver/internals/hli_v2/testers/l23_tester.py +0 -159
- xoa_driver/internals/hli_v2/testers/l23ve_tester.py +0 -98
- xoa_driver/internals/hli_v2/testers/l47_tester.py +0 -95
- xoa_driver/internals/hli_v2/testers/l47ve_tester.py +0 -50
- xoa_driver/v2/__init__.py +0 -11
- xoa_driver/v2/misc.py +0 -77
- xoa_driver/v2/modules.py +0 -308
- xoa_driver/v2/ports.py +0 -232
- xoa_driver/v2/testers.py +0 -24
- {tdl_xoa_driver-1.3.0.dist-info → tdl_xoa_driver-1.5.0.dist-info}/WHEEL +0 -0
- {tdl_xoa_driver-1.3.0.dist-info → tdl_xoa_driver-1.5.0.dist-info}/licenses/LICENSE +0 -0
- {tdl_xoa_driver-1.3.0.dist-info → tdl_xoa_driver-1.5.0.dist-info}/top_level.txt +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/base_index.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/cg.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/histogram.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/l2.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/l3.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/raw.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/replay.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/tcp.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/tls.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/udp.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/connection_group/user_state.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/filter/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/filter/genuine_filter.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/macsecscs/genuine_macsecsc.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/streams/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/indices/streams/genuine_stream.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/__interfaces.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/base_module.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/module_l23ve.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/module_l47ve.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/modules/modules_l23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/base_port.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_capture.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/bases/port_reception_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/_utils.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/general.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/shadow.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/filter_definition/working.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/pe_custom_distribution.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/pe_distribution.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/port_emulation.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/reception_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/chimera/transmission_statistics.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_combi.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_d.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_e.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_f.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_h.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_i.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_j.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_k.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_l.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/family_m.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/fault_jkl.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/freya_l1.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_ghijkl.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_ijkl_chimera.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l23/pcs_pma_l.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/counters.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/ports/port_l47/packet_engine.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/revisions.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/_base_tester.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/__init__.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/health.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/rest_api.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/time_keeper.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/l_23/upload_file.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/genuine/management_interface.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/l23ve_tester.py +0 -0
- /xoa_driver/internals/{hli_v1 → hli}/testers/l47ve_tester.py +0 -0
|
@@ -19,7 +19,7 @@ SYMBOL_RESPONSE = f"{YELLOW} <- {RESET}"
|
|
|
19
19
|
|
|
20
20
|
class StateOnUser:
|
|
21
21
|
@staticmethod
|
|
22
|
-
def setup(connid: str, logger: "CustomLogger") -> "CustomLogger
|
|
22
|
+
def setup(connid: str, logger: "CustomLogger") -> "CustomLogger | None":
|
|
23
23
|
return logger
|
|
24
24
|
|
|
25
25
|
@staticmethod
|
|
@@ -38,6 +38,7 @@ from .types import (
|
|
|
38
38
|
# Preconverted Dynamic
|
|
39
39
|
XmpStr,
|
|
40
40
|
XmpSequence,
|
|
41
|
+
XmpJson,
|
|
41
42
|
)
|
|
42
43
|
|
|
43
44
|
|
|
@@ -53,6 +54,7 @@ TYPES_FIXED = (
|
|
|
53
54
|
TYPES_COMBI = (XmpHex,)
|
|
54
55
|
TYPES_DYNAMIC = (XmpStr,)
|
|
55
56
|
TYPES_COMPOSED = (XmpSequence,)
|
|
57
|
+
TYPES_JSON = (XmpJson,)
|
|
56
58
|
|
|
57
59
|
# Important: The instances of the FieldSpecs will live as a class variables
|
|
58
60
|
# which mean wea are not able to update its attributes during runtime.
|
|
@@ -194,6 +196,43 @@ class HexSpec(FieldSpecs):
|
|
|
194
196
|
return next(iter(struct.unpack_from(format, buffer, offset)), b"")
|
|
195
197
|
|
|
196
198
|
|
|
199
|
+
class JsonSpec(FieldSpecs):
|
|
200
|
+
xmp_type: XmpJson
|
|
201
|
+
|
|
202
|
+
def __init__(
|
|
203
|
+
self,
|
|
204
|
+
xmp_type: XmpJson,
|
|
205
|
+
min_version: int | None = None,
|
|
206
|
+
max_version: int | None = None,
|
|
207
|
+
deprecated: bool = False,
|
|
208
|
+
deprecation_reason: str | None = None,
|
|
209
|
+
) -> None:
|
|
210
|
+
super().__init__(xmp_type, min_version, max_version, deprecated, deprecation_reason)
|
|
211
|
+
|
|
212
|
+
@property
|
|
213
|
+
def is_dynamic(self) -> bool:
|
|
214
|
+
return True
|
|
215
|
+
|
|
216
|
+
def format(self, bsize: int | None = None) -> str:
|
|
217
|
+
return _build_format(self.xmp_type.data_format, bsize)
|
|
218
|
+
|
|
219
|
+
def calc_bsize(self, buff: memoryview | None = None, left_offset: int = 0) -> int | None:
|
|
220
|
+
if buff is None:
|
|
221
|
+
return None
|
|
222
|
+
return len(buff[left_offset:])
|
|
223
|
+
|
|
224
|
+
def get_context_formatter(self, client_type: Type[Any], is_response: bool) -> Callable[[Any], Any]:
|
|
225
|
+
if is_response:
|
|
226
|
+
return self.xmp_type.client_format
|
|
227
|
+
return self.xmp_type.server_format
|
|
228
|
+
|
|
229
|
+
def pack(self, format: str, val: bytes) -> bytes:
|
|
230
|
+
return val
|
|
231
|
+
|
|
232
|
+
def unpack(self, format: str, buffer: memoryview, offset: int) -> Any:
|
|
233
|
+
return next(iter(struct.unpack_from(format, buffer, offset)), b"")
|
|
234
|
+
|
|
235
|
+
|
|
197
236
|
def _prepare_client_chunks(client_type: Type[Any], xmp_types_chunks: tuple) -> Callable[[Any], List[Tuple[Any, ...]]]:
|
|
198
237
|
"""Selecting the function for parsing data chunks from XMP types to Python types"""
|
|
199
238
|
def converted_dcls(val_):
|
|
@@ -284,6 +323,8 @@ def field(
|
|
|
284
323
|
specs_type = FieldSpecs
|
|
285
324
|
elif isinstance(xmp_type, TYPES_COMBI):
|
|
286
325
|
specs_type = HexSpec
|
|
326
|
+
elif isinstance(xmp_type, TYPES_JSON):
|
|
327
|
+
specs_type = JsonSpec
|
|
287
328
|
else:
|
|
288
329
|
return None
|
|
289
330
|
|
|
@@ -10,6 +10,7 @@ from typing import (
|
|
|
10
10
|
TypeVar,
|
|
11
11
|
cast,
|
|
12
12
|
)
|
|
13
|
+
import json
|
|
13
14
|
|
|
14
15
|
FMT_ORDER_NETWORK = '!'
|
|
15
16
|
FMT_BYTES_STRING = 's'
|
|
@@ -21,6 +22,7 @@ FMT_INT = 'i'
|
|
|
21
22
|
FMT_U_INT = 'I'
|
|
22
23
|
FMT_SHORT = 'h'
|
|
23
24
|
FMT_U_SHORT = 'H'
|
|
25
|
+
FMT_BYTES_JSON = 's'
|
|
24
26
|
|
|
25
27
|
# region Base Type
|
|
26
28
|
|
|
@@ -170,4 +172,21 @@ class XmpSequence(XmpType[tuple]):
|
|
|
170
172
|
self.repetitions = None
|
|
171
173
|
self.data_format = "".join(f"{t.repetitions or ''}{t.data_format}" for t in self.types_chunk)
|
|
172
174
|
|
|
175
|
+
|
|
176
|
+
class XmpJson(XmpType[bytes]):
|
|
177
|
+
"""Description class of XMP JSON type representation"""
|
|
178
|
+
|
|
179
|
+
__slots__ = ("min_len",)
|
|
180
|
+
|
|
181
|
+
def __init__(self, min_len: int | None = None) -> None:
|
|
182
|
+
self.data_format = FMT_BYTES_JSON
|
|
183
|
+
self.repetitions = None
|
|
184
|
+
self.min_len = min_len
|
|
185
|
+
|
|
186
|
+
def client_format(self, val: bytes) -> dict[str, Any]:
|
|
187
|
+
return json.loads(val.decode())
|
|
188
|
+
|
|
189
|
+
def server_format(self, val: dict) -> bytes:
|
|
190
|
+
return json.dumps(val).encode()
|
|
191
|
+
|
|
173
192
|
# endregion
|
|
@@ -2,12 +2,13 @@ from typing import Set
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
class WrongModuleError(Exception):
|
|
5
|
-
"""Module
|
|
5
|
+
"""Module cannot be assigned to the connected tester object."""
|
|
6
6
|
def __init__(self, module_revision: str, allowed_revisions: Set[str]) -> None:
|
|
7
7
|
self.module_revision = module_revision
|
|
8
8
|
self.allowed_revisions = allowed_revisions
|
|
9
9
|
self.msg = (
|
|
10
|
-
f"Module of revision <{self.module_revision}>
|
|
11
|
-
f"
|
|
10
|
+
f"Module of revision <{self.module_revision}> detected.\n"
|
|
11
|
+
f"This module is not supported by the tester object in the current tdl-xoa-driver.\n"
|
|
12
|
+
f"Supported module revisions are: {allowed_revisions}"
|
|
12
13
|
)
|
|
13
14
|
super().__init__(self.msg)
|
|
@@ -62,4 +62,4 @@ class BaseFilterIdx(BaseIndex):
|
|
|
62
62
|
@classmethod
|
|
63
63
|
async def _new(cls: Type[FT], conn: "itf.IConnection", kind: "kind.IndicesKind", observer: "idx_obs.IndicesObserver") -> FT:
|
|
64
64
|
await PF_CREATE(conn, *kind).set()
|
|
65
|
-
return cls(conn, kind, observer)
|
|
65
|
+
return cls(conn, kind, observer) # type: ignore
|
|
@@ -46,4 +46,4 @@ class LengthTermIdx(BaseIndex):
|
|
|
46
46
|
@classmethod
|
|
47
47
|
async def _new(cls: Type[LT], conn: "itf.IConnection", kind: "kind.IndicesKind", observer: "idx_obs.IndicesObserver") -> LT:
|
|
48
48
|
await PL_CREATE(conn, *kind).set()
|
|
49
|
-
return cls(conn, kind, observer)
|
|
49
|
+
return cls(conn, kind, observer) # type: ignore
|
|
@@ -190,7 +190,7 @@ class BaseMacSecTxScIdx(BaseIndex):
|
|
|
190
190
|
@classmethod
|
|
191
191
|
async def _new(cls: Type[BS], conn: "itf.IConnection", kind: "kind.IndicesKind", observer: "idx_obs.IndicesObserver") -> BS:
|
|
192
192
|
await P_MACSEC_TXSC_CREATE(conn, *kind).set()
|
|
193
|
-
return cls(conn, kind, observer)
|
|
193
|
+
return cls(conn, kind, observer) # type: ignore
|
|
194
194
|
|
|
195
195
|
|
|
196
196
|
class BaseMacSecRxScIdx(BaseIndex):
|
|
@@ -221,4 +221,4 @@ class BaseMacSecRxScIdx(BaseIndex):
|
|
|
221
221
|
@classmethod
|
|
222
222
|
async def _new(cls: Type[BS], conn: "itf.IConnection", kind: "kind.IndicesKind", observer: "idx_obs.IndicesObserver") -> BS:
|
|
223
223
|
await P_MACSEC_RXSC_CREATE(conn, *kind).set()
|
|
224
|
-
return cls(conn, kind, observer)
|
|
224
|
+
return cls(conn, kind, observer) # type: ignore
|
|
@@ -61,4 +61,4 @@ class MatchTermIdx(BaseIndex):
|
|
|
61
61
|
@classmethod
|
|
62
62
|
async def _new(cls: Type[MT], conn: "itf.IConnection", kind: "kind.IndicesKind", observer: "idx_obs.IndicesObserver") -> MT:
|
|
63
63
|
await PM_CREATE(conn, *kind).set()
|
|
64
|
-
return cls(conn, kind, observer)
|
|
64
|
+
return cls(conn, kind, observer) # type: ignore
|
|
@@ -69,4 +69,4 @@ class PortDatasetIdx(BaseIndex):
|
|
|
69
69
|
@classmethod
|
|
70
70
|
async def _new(cls: Type[PD], conn: "itf.IConnection", kind: "kind.IndicesKind", observer: "idx_obs.IndicesObserver") -> PD:
|
|
71
71
|
await PD_CREATE(conn, *kind).set()
|
|
72
|
-
return cls(conn, kind, observer)
|
|
72
|
+
return cls(conn, kind, observer) # type: ignore
|
|
@@ -401,5 +401,5 @@ class BaseStreamIdx(BaseIndex):
|
|
|
401
401
|
@classmethod
|
|
402
402
|
async def _new(cls: Type[BS], conn: "itf.IConnection", kind: "kind.IndicesKind", observer: "idx_obs.IndicesObserver") -> BS:
|
|
403
403
|
await PS_CREATE(conn, *kind).set()
|
|
404
|
-
return cls(conn, kind, observer)
|
|
404
|
+
return cls(conn, kind, observer) # type: ignore
|
|
405
405
|
|
|
@@ -26,17 +26,17 @@ from xoa_driver.internals.commands import (
|
|
|
26
26
|
M_RECONFIG_STATUS,
|
|
27
27
|
)
|
|
28
28
|
|
|
29
|
-
from xoa_driver.internals.
|
|
29
|
+
from xoa_driver.internals.hli import revisions
|
|
30
30
|
from xoa_driver.internals.utils.managers import ports_manager as pm
|
|
31
31
|
from xoa_driver.internals.utils import attributes as utils
|
|
32
32
|
from xoa_driver.internals.state_storage import modules_state
|
|
33
33
|
from xoa_driver import ports
|
|
34
|
-
from xoa_driver.internals.
|
|
34
|
+
from xoa_driver.internals.hli.modules.modules_l23.module_l23_base import MediaModule, CfpModule
|
|
35
35
|
from . import base_module as bm
|
|
36
36
|
|
|
37
37
|
if typing.TYPE_CHECKING:
|
|
38
38
|
from xoa_driver.internals.core import interfaces as itf
|
|
39
|
-
from xoa_driver.internals.
|
|
39
|
+
from xoa_driver.internals.hli.modules.modules_l23.module_l23_base import ModuleL23
|
|
40
40
|
from . import __interfaces as m_itf
|
|
41
41
|
|
|
42
42
|
|
|
@@ -37,7 +37,7 @@ from xoa_driver.internals.commands import (
|
|
|
37
37
|
M4E_RESERVE,
|
|
38
38
|
M4_TLS_CIPHER_SUITES,
|
|
39
39
|
)
|
|
40
|
-
from xoa_driver.internals.
|
|
40
|
+
from xoa_driver.internals.hli import revisions
|
|
41
41
|
from xoa_driver.internals.utils import attributes as utils
|
|
42
42
|
from xoa_driver.internals.utils.managers import ports_manager as pm
|
|
43
43
|
from xoa_driver.internals.state_storage import modules_state
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
import functools
|
|
3
3
|
from xoa_driver import ports
|
|
4
|
-
from xoa_driver.internals.
|
|
4
|
+
from xoa_driver.internals.hli import revisions
|
|
5
5
|
from xoa_driver.internals.commands import P_CAPABILITIES
|
|
6
6
|
from xoa_driver.internals.utils.managers import ports_manager as pm
|
|
7
7
|
from xoa_driver.internals.utils.cap_id import CapID
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
from xoa_driver import ports
|
|
3
|
+
from xoa_driver.internals.hli import revisions
|
|
4
|
+
from xoa_driver.internals.utils.managers import ports_manager as pm
|
|
5
|
+
|
|
6
|
+
if typing.TYPE_CHECKING:
|
|
7
|
+
from xoa_driver.internals.core import interfaces as itf
|
|
8
|
+
from .. import __interfaces as m_itf
|
|
9
|
+
|
|
10
|
+
from .module_l23_base import ModuleL23
|
|
11
|
+
from xoa_driver.internals.commands import (
|
|
12
|
+
M_CLOCKPPBSWEEP,
|
|
13
|
+
M_CLOCKSWEEPSTATUS,
|
|
14
|
+
M_HEALTH,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class MClockSweep:
|
|
19
|
+
"""Test module local clock sweep"""
|
|
20
|
+
def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
|
|
21
|
+
self.config = M_CLOCKPPBSWEEP(conn, module_id)
|
|
22
|
+
"""Configure and control the module local clock sweep.
|
|
23
|
+
Representation of M_CLOCKPPBSWEEP
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
self.status = M_CLOCKSWEEPSTATUS(conn, module_id)
|
|
27
|
+
"""Status of the module local clock sweep.
|
|
28
|
+
Representation of M_CLOCKSWEEPSTATUS
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
class MHealth:
|
|
32
|
+
"""Test module health"""
|
|
33
|
+
def __init__(self, conn: "itf.IConnection", module_id: int) -> None:
|
|
34
|
+
self.all = M_HEALTH(conn, module_id, [])
|
|
35
|
+
"""All module health information"""
|
|
36
|
+
self.info = M_HEALTH(conn, module_id, [0])
|
|
37
|
+
"""Module identification information"""
|
|
38
|
+
self.cage_insertion = M_HEALTH(conn, module_id, [1])
|
|
39
|
+
"""Module cage insertion counter"""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class ModuleFamilyEdun(ModuleL23):
|
|
43
|
+
"""Test module Edun family"""
|
|
44
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
45
|
+
super().__init__(conn, init_data)
|
|
46
|
+
|
|
47
|
+
self.clock_sweep = MClockSweep(conn, self.module_id)
|
|
48
|
+
"""Clock ppm sweep control"""
|
|
49
|
+
|
|
50
|
+
self.health = MHealth(conn, self.module_id)
|
|
51
|
+
"""Module health information"""
|
|
52
|
+
|
|
53
|
+
# region Edun
|
|
54
|
+
|
|
55
|
+
@typing.final
|
|
56
|
+
@revisions.register_valkyrie_module(rev="Edun-800G-3S-1P-SMPX[a]")
|
|
57
|
+
class MEdun800G3S1PSMPX_a(ModuleFamilyEdun):
|
|
58
|
+
"""Test module Edun-800G-3S-1P-SMPX[a]"""
|
|
59
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
60
|
+
super().__init__(conn, init_data)
|
|
61
|
+
self.ports: pm.PortsManager[ports.PEdun800G3S1PSMPX_a] = pm.PortsManager(
|
|
62
|
+
conn=conn,
|
|
63
|
+
ports_type=ports.PEdun800G3S1PSMPX_a,
|
|
64
|
+
module_id=self.module_id,
|
|
65
|
+
ports_count=self.ports_count
|
|
66
|
+
)
|
|
67
|
+
"""Port Index Manager of Edun-800G-3S-1P-SMPX[a]"""
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@typing.final
|
|
71
|
+
@revisions.register_valkyrie_module(rev="Edun-1600G-4S-1P-OSFP[a]")
|
|
72
|
+
class MEdun1600G4S1POSFP_a(ModuleFamilyEdun):
|
|
73
|
+
"""Test module Edun-1600G-4S-1P-OSFP[a]"""
|
|
74
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
75
|
+
super().__init__(conn, init_data)
|
|
76
|
+
self.ports: pm.PortsManager[ports.PEdun1600G4S1POSFP_a] = pm.PortsManager(
|
|
77
|
+
conn=conn,
|
|
78
|
+
ports_type=ports.PEdun1600G4S1POSFP_a,
|
|
79
|
+
module_id=self.module_id,
|
|
80
|
+
ports_count=self.ports_count
|
|
81
|
+
)
|
|
82
|
+
"""Port Index Manager of Edun-1600G-4S-1P-OSFP[a]"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
from xoa_driver import ports
|
|
3
|
-
from xoa_driver.internals.
|
|
3
|
+
from xoa_driver.internals.hli import revisions
|
|
4
4
|
from xoa_driver.internals.utils.managers import ports_manager as pm
|
|
5
5
|
|
|
6
6
|
if typing.TYPE_CHECKING:
|
|
@@ -81,4 +81,19 @@ class MLoki100G3S1PB_b(ModuleL23):
|
|
|
81
81
|
module_id=self.module_id,
|
|
82
82
|
ports_count=self.ports_count
|
|
83
83
|
)
|
|
84
|
-
"""Port index manager of Loki-100G-3S-1P-B[b]"""
|
|
84
|
+
"""Port index manager of Loki-100G-3S-1P-B[b]"""
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@typing.final
|
|
88
|
+
@revisions.register_valkyrie_module(rev="Loki-100G-5S-4P[a]")
|
|
89
|
+
class MLoki100G5S4P_a(ModuleL23):
|
|
90
|
+
"""Test module Loki-100G-5S-4P[a]"""
|
|
91
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
92
|
+
super().__init__(conn, init_data)
|
|
93
|
+
self.ports: pm.PortsManager[ports.PLoki100G5S4P_a] = pm.PortsManager(
|
|
94
|
+
conn=conn,
|
|
95
|
+
ports_type=ports.PLoki100G5S4P_a,
|
|
96
|
+
module_id=self.module_id,
|
|
97
|
+
ports_count=self.ports_count
|
|
98
|
+
)
|
|
99
|
+
"""Port index manager of Loki-100G-5S-4P[a]"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import typing
|
|
2
2
|
from xoa_driver import ports
|
|
3
|
-
from xoa_driver.internals.
|
|
3
|
+
from xoa_driver.internals.hli import revisions
|
|
4
4
|
from xoa_driver.internals.utils.managers import ports_manager as pm
|
|
5
5
|
|
|
6
6
|
if typing.TYPE_CHECKING:
|
|
@@ -797,4 +797,23 @@ class MFreya800G4S1POSFP_f_g2(ModuleFamilyL1):
|
|
|
797
797
|
|
|
798
798
|
|
|
799
799
|
|
|
800
|
+
#endregion
|
|
801
|
+
|
|
802
|
+
#region Freya 4S 2P
|
|
803
|
+
|
|
804
|
+
@typing.final
|
|
805
|
+
@revisions.register_valkyrie_module(rev="Freya-800G-4S-2P[a]")
|
|
806
|
+
class MFreya800G4S2P_a(ModuleFamilyL1):
|
|
807
|
+
"""Test module Freya-800G-4S-2P[a]"""
|
|
808
|
+
def __init__(self, conn: "itf.IConnection", init_data: "m_itf.ModuleInitData") -> None:
|
|
809
|
+
super().__init__(conn, init_data)
|
|
810
|
+
self.ports: pm.PortsManager[ports.PFreya800G4S2P_a] = pm.PortsManager(
|
|
811
|
+
conn=conn,
|
|
812
|
+
ports_type=ports.PFreya800G4S2P_a,
|
|
813
|
+
module_id=self.module_id,
|
|
814
|
+
ports_count=self.ports_count
|
|
815
|
+
)
|
|
816
|
+
"""Port Index Manager of Freya-800G-4S-2P[a]"""
|
|
817
|
+
|
|
818
|
+
|
|
800
819
|
#endregion
|
|
@@ -42,7 +42,7 @@ from .. import __interfaces as m_itf
|
|
|
42
42
|
|
|
43
43
|
if typing.TYPE_CHECKING:
|
|
44
44
|
from xoa_driver.internals.core import interfaces as itf
|
|
45
|
-
from xoa_driver.internals.
|
|
45
|
+
from xoa_driver.internals.hli.modules.module_chimera import ModuleChimera
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class TXClock:
|
|
@@ -55,12 +55,12 @@ from xoa_driver.internals.commands import (
|
|
|
55
55
|
)
|
|
56
56
|
if typing.TYPE_CHECKING:
|
|
57
57
|
from xoa_driver.internals.core import interfaces as itf
|
|
58
|
-
from xoa_driver.internals.
|
|
58
|
+
from xoa_driver.internals.hli.ports import base_port
|
|
59
59
|
from xoa_driver.internals.utils import attributes as utils
|
|
60
60
|
from xoa_driver.internals.utils.indices import index_manager as idx_mgr
|
|
61
61
|
from xoa_driver.internals.state_storage import ports_state
|
|
62
|
-
from xoa_driver.internals.
|
|
63
|
-
from xoa_driver.internals.
|
|
62
|
+
from xoa_driver.internals.hli.indices.length_term import LengthTermIdx
|
|
63
|
+
from xoa_driver.internals.hli.indices.match_term import MatchTermIdx
|
|
64
64
|
|
|
65
65
|
from .port_capture import PortCapture
|
|
66
66
|
|
|
@@ -16,11 +16,11 @@ from xoa_driver.internals.commands import (
|
|
|
16
16
|
)
|
|
17
17
|
from xoa_driver.internals.utils import attributes as utils
|
|
18
18
|
from xoa_driver.internals.utils.indices import index_manager as idx_mgr
|
|
19
|
-
from xoa_driver.internals.
|
|
20
|
-
from xoa_driver.internals.
|
|
21
|
-
from xoa_driver.internals.
|
|
19
|
+
from xoa_driver.internals.hli.indices.streams.genuine_stream import GenuineStreamIdx
|
|
20
|
+
from xoa_driver.internals.hli.indices.filter.genuine_filter import GenuineFilterIdx
|
|
21
|
+
from xoa_driver.internals.hli.indices.port_dataset import PortDatasetIdx
|
|
22
22
|
from xoa_driver.internals.state_storage import ports_state
|
|
23
|
-
from xoa_driver.internals.
|
|
23
|
+
from xoa_driver.internals.hli.indices.macsecscs.genuine_macsecsc import GenuineMacSecTxScIdx, GenuineMacSecRxScIdx
|
|
24
24
|
|
|
25
25
|
from .port_l23 import (
|
|
26
26
|
BasePortL23,
|