Beispiel #1
0
class ECMP(Packet):
    name = "ECMP"
    fields_desc = [ 
                    ShortField("enable", 0),
                    ShortField("prot_id", 0),
                    IntField("pkt_num",0)
                ]
Beispiel #2
0
class MetadataHeader(Packet):
    name = 'Metadata Header'
    fields_desc = [
        IntField('SwitchID', 0),
        ShortField('IngressPort', 0),
        ShortField('EgressPort', 0)
    ]
Beispiel #3
0
class SrcRoute(Packet):
    name = "SrcRoute"
    fields_desc = [
        ShortField("preamble", 0),
        ShortField("group_id", 0),
        IntField("sequence_number", 0)
    ]
Beispiel #4
0
class FLOWLET(Packet):
    name = "FLOWLET"
    fields_desc = [ 
                    ShortField("enable", 0),
                    ShortField("prot_id", 0),
                    IntField("pkt_num",0)
                ]
Beispiel #5
0
class CustomTLV(Packet):
    """ Custom TLV protocol layer for scapy """

    fields_desc = [
        ShortField("type", 0),
        ShortField("length", 4),
        StrField("value", "")
    ]
Beispiel #6
0
class STATS(Packet):
    name = "STATS"
    fields_desc = [ 
                    IntField("port2", 0),
                    IntField("port3", 0),
                    ShortField("enable",0),
                    ShortField("prot_id", 0)
                ]
Beispiel #7
0
class ECMP(Packet):
    name = "ECMP"
    fields_desc = [
        ShortField("is_load_balance", 1),
        ShortField("type", 0),
        ShortField("is_track", 0),
        IntField("port2_bytes", 0),
        IntField("port3_bytes", 0)
    ]
Beispiel #8
0
class IPFIX(Packet):
    name = "IPFIX"
    fields_desc = [
        ShortField("version", 10),
        ShortField("length", None),
        IntField("exportTime", None),
        IntField("sequenceNumber", 1),
        IntField("observationDomainID", 1),
    ]
Beispiel #9
0
class Pegasus(Packet):
    name = "PEGASUS"
    fields_desc = [
        ShortField("id", 0x5047),
        ByteField("op", None),
        IntField("keyhash", None),
        ByteField("node", 0),
        ShortField("load", 0)
    ]
Beispiel #10
0
class Migration(Packet):
    name = "Migration"
    fields_desc = [BitField("protocol", 0, 8),
        BitField("stage", 0, 8),
        ShortField("index", 0),
        IntField("state", 0),
        BitField("mac", 0, 64),
        IntField("verify", 0),
        ShortField("mainProg", 0),
        ShortField("deltaProg", 0)]
Beispiel #11
0
class MetadataHeader(Packet):
    name = 'Metadata Header'
    fields_desc = [
        IntField('SwitchID', 0),
        ShortField('IngressPort', 0),
        ShortField('EgressPort', 0),  # ShortField means 16 bytes
        IntField('Hop_Latency', 0),
        ByteField('Qid', 0),
        BitField('Qdepth', 0, 24)
    ]
Beispiel #12
0
class Set(Packet):
    name = "Set"
    fields_desc = [ShortField("setID", 256), ShortField("length", None)]

    def guess_payload_class(self, payload):
        if self.setID == 2:
            return Template
        elif self.setID > 255:
            return Data
        else:
            return Packet.guess_payload_class(self, payload)
Beispiel #13
0
class SwitchTrace2(Packet):
    fields_desc = [ BitField("swid", 0, 8),
                  BitField("in_port", 0, 8),
                  BitField("out_port", 0, 8),
                  ShortField("in_qdepth", 0),
                  ShortField("out_qdepth", 0),
                  BitField("in_time", 0, 48),
                  BitField("out_time", 0, 48),
                  BitField("queue_time", 0, 32)]
    def extract_padding(self, p):
                return "", p
Beispiel #14
0
class ActionDescriptorField_v1_3(Packet):
    """
    OpenFlow Action Descriptor Field
    """

    name = 'ActionDescriptorField_v1_3'

    fields_desc = [
        ShortField('Type', None),
        ShortField('Length', None),
        XByteField('Pad', None),
    ]
Beispiel #15
0
class OpenFlowQueueProprieties_v1_3(Packet):
    """
    OpenFlow Queue Properties Field
    """

    name = 'OpenFlowBucket_v1_3'

    fields_desc = [
        ShortField('Property', None),
        ShortField('Length', None),
        XByteField('Pad', None),
    ]
Beispiel #16
0
class CoLoR_Get(Packet):
    name = "CoLoR_Get"
    fields_desc = [
        BitField("Version", 7, 4, tot_size=1),
        BitField("Package", 2, 4, end_tot_size=1),
        ByteField("TTL", 64),
        LEShortField("pkg_length", None),
        XShortField("checksum", None),
        ShortField("MTU", None),
        FieldLenField("PID_num", None, fmt="B", count_of="PIDs"),
        FlagsField("Flags", 8, 8, "rrrASQKF"),
        ShortField("Minimal_PID_CP", None),
        StrFixedLenField("N_sid", "", 16),
        StrFixedLenField("L_sid", "", 20),
        StrFixedLenField("nid", "", 16),
        ConditionalField(
            FieldLenField("Public_key_len",
                          None,
                          fmt="H",
                          length_of="Public_key"),
            lambda pkt: pkt.Flags.K == True),
        ConditionalField(
            StrLenField("Public_key",
                        "",
                        length_from=lambda pkt: pkt.Public_key_len),
            lambda pkt: pkt.Flags.K == True),
        ConditionalField(
            FieldLenField("QoS_len",
                          None,
                          fmt="B",
                          length_of="QoS_requirements"),
            lambda pkt: pkt.Flags.Q == True),
        ConditionalField(
            StrLenField("QoS_requirements",
                        "",
                        length_from=lambda pkt: pkt.QoS_len),
            lambda pkt: pkt.Flags.Q == True),
        ConditionalField(IntField("Seg_ID", None),
                         lambda pkt: pkt.Flags.S == True),
        FieldListField("PIDs",
                       None,
                       StrFixedLenField("", "", 4),
                       count_from=lambda pkt: pkt.PID_num)
    ]

    def post_build(self, pkt, pay):
        if self.pkg_length is None:
            self.pkg_length = len(pkt)
            pkt = pkt[:2] + int2BytesLE(self.pkg_length, 2) + pkt[4:]
        if self.checksum is None:
            self.checksum = CalcChecksum(pkt)
            pkt = pkt[:4] + int2Bytes(self.checksum, 2) + pkt[6:]
        return pkt + pay
Beispiel #17
0
class OpenFlowMeterBand_v1_3(Packet):
    """
    OpenFlow Meter Band Field
    """

    name = 'OpenFlowMeterBand_v1_3'

    fields_desc = [
        ShortField('Type', None),
        ShortField('Length', None),
        IntField('Rate', None),
        IntField('BurstSize', None),
    ]
Beispiel #18
0
class INT(Packet):
    name = "int"
    fields_desc = [
        BitField("version", 1, 4),
        BitField("rep", 0, 2),
        BitField("c", 0, 1),
        BitField("e", 0, 1),
        BitField("m", 0, 1),
        BitField("reserved1", 0, 10),
        BitField("hop_ml", None, 5),
        ByteField("rem_hop_cnt", None),
        ShortField("ins_map", 0),
        ShortField("reserved2", 0),
    ]
Beispiel #19
0
class TailHeader(Packet):
    name = 'Tail Header'
    fields_desc = [
        ByteField('next_proto', 0),
        ShortField('dest_port', 0),
        ByteField('dscp', 0),
    ]
Beispiel #20
0
class Perf(Packet):
        name = "Perf"
        fields_desc = [
        ShortField('seqno', 0),
        BitField('tss',0x0,32),
        BitField('tse',0x0,32)
        ]
Beispiel #21
0
class MRI(Packet):
    fields_desc = [
        ShortField("count", 0),
        PacketListField("swtraces", [],
                        SwitchTrace,
                        count_from=lambda pkt: (pkt.count * 1))
    ]
Beispiel #22
0
class OpenFlowBucket_v1_3(Packet):
    """
    OpenFlow Bucket Field
    """

    name = 'OpenFlowBucket_v1_3'

    fields_desc = [
        ShortField('Length', None),
        ShortField('Weight', None),
        IntField('WatchPort', None),
        IntField('WatchGroup', None),
        XByteField('Pad', None),
        _PacketField('PacketOutput<ActionDescriptors>', None,
                     ActionDescriptorField_v1_3, 5),
    ]
Beispiel #23
0
class HulappProtocol(Packet):
    name = "HulappProtocol"
    fields_desc = [ShortField("dst_tor", 0), IntField("seq_no", 0)]

    @classmethod
    def add_IntField(cls, name, value):
        cls.fields_desc.append(IntField(name, value))
Beispiel #24
0
class StatsRequestBody_v1_0(Packet):
    """
    OpenFlow Stats Request Body
    """

    name = 'StatsRequestBody_v1_0'

    fields_desc = [
        ShortEnumField('Type', None, ofp_v1_0_stats_requestreply_type),
        ShortField('Flags', None),
        _PacketField('<FlowMatchDescriptor>', None,
                     FlowMatchDescriptorField_v1_0, 40),
        ByteField('TableID', None),
        XByteField('Reserved', None),
        ShortField('EgressPortNumber', None)
    ]
Beispiel #25
0
class PTP(Packet):
    """Precision Time Protocol"""
    name = "PTP protocol"
    fields_desc = [
        XBitField('type_', 0x10, 8),
        XBitField('version', 0x02, 8),
        ShortField('messageLength', 0x36),
        XBitField('subdomain', 0x00, 8),
        ShortField('flags', 0),
        XBitField('correction', 0x00, 48),
        XBitField('clockIdentity', 0x008063FFFF0009BA, 64),
        ShortField('sourcePortID', 1),
        ShortField('sequenceID', 0x9E48),
        XBitField('control', 0x05, 8),
        XBitField('logMessagePeriod', 0x0F, 8),
        XBitField('originTimestamp', 0x000045B111510472F9C1, 80)
    ]
Beispiel #26
0
class nodeCount(Packet):
    name = "nodeCount"
    fields_desc = [
        ShortField("count", 0),
        PacketListField("INT", [],
                        InBandNetworkTelemetry,
                        count_from=lambda pkt: (pkt.count * 1))
    ]
class UDP(Packet):
    name = "UDP"
    fields_desc = [ ShortEnumField("sport", 53, UDP_SERVICES), #standard UDP
                    ShortEnumField("dport", 53, UDP_SERVICES),
                    ShortField("len", None),
                    XShortField("chksum", None), 
                    XByteField("ack",0), #Acknowlegment number - 8bit
                    X3BytesField("pkg",1)] #pakcage number -24 bit                
Beispiel #28
0
class IPOption_QUERY(IPOption):
    name = "QUERY"
    option = 31
    fields_desc = [
        _IPOption_HDR,
        ShortField("count", 0),
        ByteField("flow_proto", 0)
    ]
Beispiel #29
0
class FieldSpecifier(Packet):
    name = "Field Specifier"
    fields_desc = [
        ShortEnumField("informationElement", None, information_elements),
        ShortField("fieldLength", None),
    ]

    def extract_padding(self, s):
        return "", s
Beispiel #30
0
class Template(Packet):
    name = "Template"
    fields_desc = [
        ShortField("templateID", 256),
        FieldLenField("fieldCount", None, count_of="fields"),
        PacketListField(
            "templateFields", [], FieldSpecifier, count_from=lambda p: p.fieldCount
        ),
    ]