Esempio n. 1
0
class PID_REACHABILITY_LEASE_DURATION(PIDPacketBase):
    name = "PID_REACHABILITY_LEASE_DURATION"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        PacketField("lease_duration", "", LeaseDurationPacket),
    ]
Esempio n. 2
0
class PID_PRODUCT_VERSION(PIDPacketBase):
    name = "PID_PRODUCT_VERSION"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        PacketField("productVersion", "", ProductVersionPacket),
    ]
Esempio n. 3
0
class PID_METATRAFFIC_MULTICAST_LOCATOR(PIDPacketBase):
    name = "PID_METATRAFFIC_MULTICAST_LOCATOR"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        PacketField("locator", "", LocatorPacket),
    ]
Esempio n. 4
0
class PID_ENDPOINT_GUID(PIDPacketBase):
    name = "PID_ENDPOINT_GUID"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        PacketField("guid", "", GUIDPacket),
    ]
Esempio n. 5
0
class PID_RTI_DOMAIN_ID(PIDPacketBase):
    name = "PID_RTI_DOMAIN_ID"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        EField(IntField("domainId", 0),
               endianness=FORMAT_LE,
               endianness_from=None)
    ]
Esempio n. 6
0
class PID_VENDOR_BUILTIN_ENDPOINT_SET(PIDPacketBase):
    name = "PID_VENDOR_BUILTIN_ENDPOINT_SET"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        EField(XIntField("flags", 0),
               endianness=FORMAT_LE,
               endianness_from=None)
    ]
Esempio n. 7
0
class PID_PLUGIN_PROMISCUITY_KIND(PIDPacketBase):
    name = "PID_PLUGIN_PROMISCUITY_KIND"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        EField(XIntField("promiscuityKind", 0x0),
               endianness=FORMAT_LE,
               endianness_from=None)
    ]
Esempio n. 8
0
class RTPSSubMessage_INFO_TS(EPacket):
    """
    0...2...........7...............15.............23...............31
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   INFO_TS     |     flags     |      octetsToNextHeader       |
    +---------------+---------------+---------------+---------------+
    |                                                               |
    + Timestamp timestamp [only if T==1]                            +
    |                                                               |
    +---------------+---------------+---------------+---------------+
    """

    name = "RTPS INFO_TS (0x09)"
    fields_desc = [
        XByteField("submessageId", 0x09),
        FlagsField(
            "submessageFlags", 0, 8,
            ["E", "I", "?", "?", "?", "?", "?", "?"]),
        EField(ShortField("octetsToNextHeader", 0)),
        ConditionalField(
            Field("ts_seconds", default=0, fmt="<l"),
            lambda pkt: str(pkt.submessageFlags).find("I"),
        ),
        ConditionalField(
            Field("ts_fraction", default=0, fmt="<L"),
            lambda pkt: str(pkt.submessageFlags).find("I"),
        ),
    ]
Esempio n. 9
0
class PID_TRANSPORT_INFO_LIST(PIDPacketBase):
    name = "PID_TRANSPORT_INFO_LIST"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        XStrFixedLenField("padding", "", 4),
        EField(
            PacketListField("transportInfo", [],
                            TransportInfoPacket,
                            length_from=lambda p: p.parameterLength - 4))
    ]
Esempio n. 10
0
class PID_MULTICAST_LOCATOR(PIDPacketBase):
    name = "PID_MULTICAST_LOCATOR"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        StrLenField(
            "parameterData",
            "",
            length_from=lambda x: x.parameterLength,
            max_length=STR_MAX_LEN,
        ),
    ]
Esempio n. 11
0
class PID_VENDOR_ID(PIDPacketBase):
    name = "PID_VENDOR_ID"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        PacketField("vendorId", "", VendorIdPacket),
        StrLenField(
            "padding",
            "",
            length_from=lambda x: x.parameterLength - 2,
            max_length=STR_MAX_LEN,
        ),
    ]
Esempio n. 12
0
class PID_PROTOCOL_VERSION(PIDPacketBase):
    name = "PID_PROTOCOL_VERSION"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        PacketField("protocolVersion", "", ProtocolVersionPacket),
        StrLenField(
            "padding",
            "",
            length_from=lambda x: x.parameterLength - 2,
            max_length=STR_MAX_LEN,
        ),
    ]
Esempio n. 13
0
class RTPSSubMessage_HEARTBEAT(EPacket):
    """
    0...2...........7...............15.............23...............31
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   HEARTBEAT   |     flags     |      octetsToNextHeader       |
    +---------------+---------------+---------------+---------------+
    | EntityId readerEntityId                                       |
    +---------------+---------------+---------------+---------------+
    | EntityId writerEntityId                                       |
    +---------------+---------------+---------------+---------------+
    |                                                               |
    + SequenceNumber firstAvailableSeqNumber                        +
    |                                                               |
    +---------------+---------------+---------------+---------------+
    |                                                               |
    + SequenceNumber lastSeqNumber                                  +
    |                                                               |
    +---------------+---------------+---------------+---------------+
    | Counter count                                                 |
    +---------------+---------------+---------------+---------------+
    """

    name = "RTPS HEARTBEAT (0x07)"
    fields_desc = [
        XByteField("submessageId", 0x07),
        XByteField("submessageFlags", 0),
        EField(ShortField("octetsToNextHeader", 0)),
        EnumField(
            "reader_id",
            default=b"\x00\x00\x00\x00",
            fmt="4s",
            enum=_rtps_reserved_entity_ids,
        ),
        EnumField(
            "writer_id",
            default=b"\x00\x00\x00\x00",
            fmt="4s",
            enum=_rtps_reserved_entity_ids,
        ),
        XLongField("firstAvailableSeqNum", 0),
        XLongField("lastSeqNum", 0),
        EField(IntField("count", 0)),
    ]
Esempio n. 14
0
class PIDPacketBase(Packet):
    name = "PID Base Packet"
    fields_desc = [
        EField(
            ParameterIdField("parameterId", 0),
            endianness=FORMAT_LE,
            endianness_from=None,
        ),
        EField(ShortField("parameterLength", 0),
               endianness=FORMAT_LE,
               endianness_from=None),
        StrLenField(
            "parameterData",
            "",
            length_from=lambda x: x.parameterLength,
            max_length=STR_MAX_LEN,
        ),
    ]

    def extract_padding(self, p):
        return b"", p
Esempio n. 15
0
class ParticipantMessageDataPacket(EPacket):
    name = "Participant Message Data"
    fields_desc = [
        PacketField("guidPrefix", "", GUIDPrefixPacket),
        XIntField("kind", 0),
        EField(XIntField("sequenceSize", 0)),  # octets
        StrLenField(
            "serializedData",
            "",
            length_from=lambda x: x.sequenceSize * 4,
            max_length=STR_MAX_LEN,
        ),
    ]
Esempio n. 16
0
class RTPSSubMessage_PAD(EPacket):
    """
    0...2...........7...............15.............23...............31
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   PAD         |     flags     |      octetsToNextHeader       |
    +---------------+---------------+---------------+---------------+
    """

    name = "RTPS PAD (0x01)"
    fields_desc = [
        XByteField("submessageId", 0x01),
        XByteField("submessageFlags", 0),
        EField(ShortField("octetsToNextHeader", 0)),
    ]
Esempio n. 17
0
class RTPSSubMessage_ACKNACK(EPacket):
    """
    0...2...........7...............15.............23...............31
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   ACKNACK     |     flags     |      octetsToNextHeader       |
    +---------------+---------------+---------------+---------------+
    | EntityId readerEntityId                                       |
    +---------------+---------------+---------------+---------------+
    | EntityId writerEntityId                                       |
    +---------------+---------------+---------------+---------------+
    |                                                               |
    + SequenceNumberSet readerSNState                               +
    |                                                               |
    +---------------+---------------+---------------+---------------+
    | Counter count                                                 |
    +---------------+---------------+---------------+---------------+
    """

    name = "RTPS ACKNACK (0x06)"
    fields_desc = [
        XByteField("submessageId", 0x06),
        XByteField("submessageFlags", 0x00),
        EField(ShortField("octetsToNextHeader", 0)),
        EnumField(
            "reader_id",
            default=b"\x00\x00\x00\x00",
            fmt="4s",
            enum=_rtps_reserved_entity_ids,
        ),
        EnumField(
            "writer_id",
            default=b"\x00\x00\x00\x00",
            fmt="4s",
            enum=_rtps_reserved_entity_ids,
        ),
        XStrLenField(
            "readerSNState",
            0, length_from=lambda pkt: pkt.octetsToNextHeader - 8 - 4
        ),
        XNBytesField("count", 0, 4),
    ]
Esempio n. 18
0
class RTPSSubMessage_INFO_DST(EPacket):
    """
    0...2...........7...............15.............23...............31
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   INFO_DST    |     flags     |      octetsToNextHeader       |
    +---------------+---------------+---------------+---------------+
    |                                                               |
    + GuidPrefix guidPrefix                                         +
    |                                                               |
    +---------------+---------------+---------------+---------------+
    """

    name = "RTPS INFO_DTS (0x0e)"
    endianness = ">"

    fields_desc = [
        XByteField("submessageId", 0x0E),
        XByteField("submessageFlags", 0),
        EField(ShortField("octetsToNextHeader", 0)),
        PacketField("guidPrefix", "", GUIDPrefixPacket),
    ]
Esempio n. 19
0
class RTPSSubMessage_DATA(EPacket):
    """
    0...2...........7...............15.............23...............31
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | RTPS_DATA     |     flags     |      octetsToNextHeader       |
    +---------------+---------------+---------------+---------------+
    | Flags extraFlags              |      octetsToInlineQos        |
    +---------------+---------------+---------------+---------------+
    | EntityId readerEntityId                                       |
    +---------------+---------------+---------------+---------------+
    | EntityId writerEntityId                                       |
    +---------------+---------------+---------------+---------------+
    |                                                               |
    + SequenceNumber writerSeqNum                                   +
    |                                                               |
    +---------------+---------------+---------------+---------------+
    |                                                               |
    ~ ParameterList inlineQos [only if Q==1]                        ~
    |                                                               |
    +---------------+---------------+---------------+---------------+
    |                                                               |
    ~ SerializedData serializedData [only if D==1 || K==1]          ~
    |                                                               |
    +---------------+---------------+---------------+---------------+
    """

    name = "RTPS DATA (0x15)"
    fields_desc = [
        XByteField("submessageId", 0x15),
        XByteField("submessageFlags", 0x00),
        EField(ShortField("octetsToNextHeader", 0)),
        XNBytesField("extraFlags", 0x0000, 2),
        EField(ShortField("octetsToInlineQoS", 0)),
        X3BytesField("readerEntityIdKey", 0),
        XByteField("readerEntityIdKind", 0),
        X3BytesField("writerEntityIdKey", 0),
        XByteField("writerEntityIdKind", 0),
        # EnumField(
        #     "reader_id",
        #     default=b"\x00\x00\x00\x00",
        #     fmt="4s",
        #     enum=_rtps_reserved_entity_ids,
        # ),
        # EnumField(
        #     "writer_id",
        #     default=b"\x00\x00\x00\x00",
        #     fmt="4s",
        #     enum=_rtps_reserved_entity_ids,
        # ),
        EField(IntField("writerSeqNumHi", 0)),
        EField(IntField("writerSeqNumLow", 0)),
        # -------------------------------------
        ConditionalField(
            InlineQoSPacketField("inlineQoS", "", InlineQoSPacket),
            lambda pkt: pkt.submessageFlags & 0b00000010 == 0b00000010,
        ),
        ConditionalField(
            DataPacketField("key", "", DataPacket),
            lambda pkt: pkt.submessageFlags & 0b00001000 == 0b00001000,
        ),
        ConditionalField(
            DataPacketField("data", "", DataPacket),
            lambda pkt: pkt.submessageFlags & 0b00000100 == 0b00000100,
        ),
    ]