scapy.contrib.oam
Operation, administration and maintenance (OAM)
- author:
Sergey Matsievskiy, matsievskiysv@gmail.com
- description:
This module provides Scapy layers for the OAM protocol.
- normative references:
ITU-T Rec. G.8013/Y.1731 (08/2019) - Operation, administration and maintenance (OAM) functions and mechanisms for Ethernet-based networks (https://www.itu.int/rec/T-REC-G.8013)
ITU-T Rec. G.8031/Y.1342 (01/2015) - Ethernet linear protection switching (https://www.itu.int/rec/T-REC-G.8031)
ITU-T Rec. G.8032/Y.1344 (02/2022) - Ethernet ring protection switching (https://www.itu.int/rec/T-REC-G.8032)
- class scapy.contrib.oam.APS(_pkt, /, *, req_st=0, prot_type=<Flag 0 ()>, req_sig=0, br_sig=0, br_type=<Flag 0 ()>)[source]
Bases:
PacketLinear protective switching APS data packet
- aliastypes = [<class 'scapy.contrib.oam.APS'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.MegId(_pkt, /, *, resv=1, format=0, length=None, values=None)[source]
Bases:
PacketMEG ID
- aliastypes = [<class 'scapy.contrib.oam.MegId'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.MepIdField(name, default)[source]
Bases:
ShortFieldShort field with insignificant three leading bytes
- class scapy.contrib.oam.OAM(_pkt, /, *, mel=0, version=None, opcode=None, flags=None, period=None, tlv_offset=None, seq_num=0, trans_id=0, oui=None, subopcode=None, mep_id=0, meg_id=<MegId |>, src_mep_id=0, rcv_mep_id=0, test_id=0, txfcf=0, rxfcb=0, rxfcf=0, txfcb=0, resv=0, ttl=0, orig_mac=None, targ_mac=None, relay_act=None, txtsf=<PTP_TIMESTAMP |>, rxtsf=<PTP_TIMESTAMP |>, txtsb=<PTP_TIMESTAMP |>, rxtsb=<PTP_TIMESTAMP |>, expct_dur=None, nom_bdw=None, curr_bdw=None, port_id=None, aps=<APS |>, raps=<RAPS |>, tlvs=[], opt_data=None, end_tlv=0)[source]
Bases:
PacketOAM data unit
- BNM_PERIOD_FLAGS = {4: '1 frame per second', 5: '1 frame per 10 seconds', 6: '1 frame per minute'}
- OPCODES = {1: 'Continuity Check Message (CCM)', 2: 'Loopback Reply (LBR)', 3: 'Loopback Message (LBM)', 4: 'Linktrace Reply (LTR)', 5: 'Linktrace Message (LTM)', 32: 'Generic Notification Message (GNM)', 33: 'Alarm Indication Signal (AIS)', 35: 'Lock Signal (LCK)', 37: 'Test Signal (TST)', 39: 'Automatic Protection Switching (APS)', 40: 'Ring-Automatic Protection Switching (R-APS)', 41: 'Maintenance Communication Channel (MCC)', 42: 'Loss Measurement Reply (LMR)', 43: 'Loss Measurement Message (LMM)', 45: 'One Way Delay Measurement (1DM)', 46: 'Delay Measurement Reply (DMR)', 47: 'Delay Measurement Message (DMM)', 48: 'Experimental OAM Reply (EXR)', 49: 'Experimental OAM Message (EXM)', 50: 'Vendor Specific Reply (VSR)', 51: 'Vendor Specific Message (VSM)', 52: 'Client Signal Fail (CSF)', 53: 'One Way Synthetic Loss Measurement (1SL)', 54: 'Synthetic Loss Reply (SLR)', 55: 'Synthetic Loss Message (SLM)'}
- PERIOD_FLAGS = {4: '1 frame per second', 6: '1 frame per minute'}
- TIME_FLAGS = {0: 'Invalid value', 1: 'Trans Int 3.33ms', 2: 'Trans Int 10ms', 3: 'Trans Int 100ms', 4: 'Trans Int 1s', 5: 'Trans Int 10s', 6: 'Trans Int 1min', 7: 'Trans Int 10min'}
- aliastypes = [<class 'scapy.contrib.oam.OAM'>, <class 'scapy.packet.Packet'>]
- fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (OAM).mel>, <scapy.fields.MultipleTypeField object>, <EnumField (OAM).opcode>, <scapy.fields.MultipleTypeField object>, <scapy.fields.ConditionalField object>, <scapy.fields.MultipleTypeField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <ByteField (OAM).end_tlv>]
- class scapy.contrib.oam.OAM_DATA_TLV(_pkt, /, *, type=3, length=None)[source]
Bases:
PacketOAM Data TLV
- aliastypes = [<class 'scapy.contrib.oam.OAM_DATA_TLV'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.OAM_LTM_TLV(_pkt, /, *, type=7, length=8, egress_id=0)[source]
Bases:
PacketOAM LTM TLV data
- aliastypes = [<class 'scapy.contrib.oam.OAM_LTM_TLV'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.OAM_LTR_EG_TLV(_pkt, /, *, type=6, length=7, egress_act=0, egress_mac=None)[source]
Bases:
PacketOAM LTR TLV data
- aliastypes = [<class 'scapy.contrib.oam.OAM_LTR_EG_TLV'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.OAM_LTR_IG_TLV(_pkt, /, *, type=5, length=7, ingress_act=0, ingress_mac=None)[source]
Bases:
PacketOAM LTR TLV data
- aliastypes = [<class 'scapy.contrib.oam.OAM_LTR_IG_TLV'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.OAM_LTR_TLV(_pkt, /, *, type=8, length=16, last_egress_id=0, next_egress_id=0)[source]
Bases:
PacketOAM LTR TLV data
- aliastypes = [<class 'scapy.contrib.oam.OAM_LTR_TLV'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.OAM_TEST_ID_TLV(_pkt, /, *, type=36, length=32, test_id=0)[source]
Bases:
PacketOAM Test ID TLV data
- aliastypes = [<class 'scapy.contrib.oam.OAM_TEST_ID_TLV'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.OAM_TEST_TLV(_pkt, /, *, type=32, length=None, pat_type=0, crc=None)[source]
Bases:
PacketOAM test TLV data
- aliastypes = [<class 'scapy.contrib.oam.OAM_TEST_TLV'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.OAM_TLV(_pkt, /, *, type=1, length=None)[source]
Bases:
PacketOAM TLV
- aliastypes = [<class 'scapy.contrib.oam.OAM_TLV'>, <class 'scapy.packet.Packet'>]
- class scapy.contrib.oam.PTP_TIMESTAMP(_pkt, /, *, seconds=0, nanoseconds=0)[source]
Bases:
PacketPTP timestamp
- aliastypes = [<class 'scapy.contrib.oam.PTP_TIMESTAMP'>, <class 'scapy.packet.Packet'>]