class ModbusPDU15WriteFileRecordError(Packet): name = "Write File Record Exception" fields_desc = [XByteField("funcCode", 0x95), ByteEnumField("exceptCode", 1, _modbus_exceptions)]
class SCTPChunkCookieAck(_SCTPChunkGuessPayload, Packet): fields_desc = [ByteEnumField("type", 11, sctpchunktypes), XByteField("flags", None), ShortField("len", 4), ]
class OFPMatch(Packet): name = "OFP_MATCH" fields_desc = [ FlagsField("wildcards1", None, 12, ["DL_VLAN_PCP", "NW_TOS"]), BitField("nw_dst_mask", None, 6), BitField("nw_src_mask", None, 6), FlagsField("wildcards2", None, 8, [ "IN_PORT", "DL_VLAN", "DL_SRC", "DL_DST", "DL_TYPE", "NW_PROTO", "TP_SRC", "TP_DST" ]), ShortEnumField("in_port", None, ofp_port_no), MACField("dl_src", None), MACField("dl_dst", None), ShortField("dl_vlan", None), ByteField("dl_vlan_pcp", None), XByteField("pad1", None), ShortField("dl_type", None), ByteField("nw_tos", None), ByteField("nw_proto", None), XShortField("pad2", None), IPField("nw_src", "0"), IPField("nw_dst", "0"), ShortField("tp_src", None), ShortField("tp_dst", None) ] def extract_padding(self, s): return b"", s # with post_build we create the wildcards field bit by bit def post_build(self, p, pay): # first 10 bits of an ofp_match are always set to 0 l = "0" * 10 # when one field has not been declared, it is assumed to be wildcarded if self.wildcards1 is None: if self.nw_tos is None: l += "1" else: l += "0" if self.dl_vlan_pcp is None: l += "1" else: l += "0" else: w1 = binrepr(self.wildcards1) l += "0" * (2 - len(w1)) l += w1 # ip masks use 6 bits each if self.nw_dst_mask is None: if self.nw_dst is "0": l += "111111" # 0x100000 would be ok too (32-bit IP mask) else: l += "0" * 6 else: m1 = binrepr(self.nw_dst_mask) l += "0" * (6 - len(m1)) l += m1 if self.nw_src_mask is None: if self.nw_src is "0": l += "111111" else: l += "0" * 6 else: m2 = binrepr(self.nw_src_mask) l += "0" * (6 - len(m2)) l += m2 # wildcards2 works the same way as wildcards1 if self.wildcards2 is None: if self.tp_dst is None: l += "1" else: l += "0" if self.tp_src is None: l += "1" else: l += "0" if self.nw_proto is None: l += "1" else: l += "0" if self.dl_type is None: l += "1" else: l += "0" if self.dl_dst is None: l += "1" else: l += "0" if self.dl_src is None: l += "1" else: l += "0" if self.dl_vlan is None: l += "1" else: l += "0" if self.in_port is None: l += "1" else: l += "0" else: w2 = binrepr(self.wildcards2) l += "0" * (8 - len(w2)) l += w2 # In order to write OFPMatch compliant with the specifications, # if prereq_autocomplete has been set to True # we assume ethertype=IP or nwproto=TCP when appropriate subfields are provided. # noqa: E501 if conf.contribs['OPENFLOW']['prereq_autocomplete']: if self.dl_type is None: if self.nw_src is not "0" or self.nw_dst is not "0" or self.nw_proto is not None or self.nw_tos is not None: # noqa: E501 p = p[:22] + struct.pack("!H", 0x0800) + p[24:] l = l[:-5] + "0" + l[-4:] if self.nw_proto is None: if self.tp_src is not None or self.tp_dst is not None: p = p[:22] + struct.pack("!H", 0x0800) + p[24:] l = l[:-5] + "0" + l[-4:] p = p[:25] + struct.pack("!B", 0x06) + p[26:] l = l[:-6] + "0" + l[-5:] ins = b"".join(chb(int("".join(x), 2)) for x in zip(*[iter(l)] * 8)) p = ins + p[4:] return p + pay
class GMLAN_RDI_BM(Packet): name = 'ReadStatusOfDTCByStatusMask' fields_desc = [ XByteField('DTCStatusMask', 0), ]
class SCTPChunkHeartbeatReq(_SCTPChunkGuessPayload, Packet): fields_desc = [ByteEnumField("type", 4, sctpchunktypes), XByteField("flags", None), FieldLenField("len", None, length_of="params", adjust=lambda pkt, x:x + 4), # noqa: E501 ChunkParamField("params", None, length_from=lambda pkt:pkt.len - 4), # noqa: E501 ]
class LL_TERMINATE_IND(Packet): name = 'LL_TERMINATE_IND' fields_desc = [ XByteField("code", 0x0), ]
class LL_REJECT_IND(Packet): name = "LL_REJECT_IND" fields_desc = [ XByteField("code", 0x0), ]
class ModbusPDU18ReadFIFOQueueError(Packet): name = "Read FIFO Queue Exception" fields_desc = [XByteField("funcCode", 0x98), ByteEnumField("exceptCode", 1, _modbus_exceptions)]
class ModbusPDU2B0EReadDeviceIdentificationRequest(Packet): name = "Read Device Identification" fields_desc = [XByteField("funcCode", 0x2B), XByteField("MEIType", 0x0E), ByteEnumField("readCode", 1, _read_device_id_codes), ByteEnumField("objectId", 0x00, _read_device_id_object_id)]
class ModbusPDU17ReadWriteMultipleRegistersError(Packet): name = "Read Write Multiple Exception" fields_desc = [XByteField("funcCode", 0x97), ByteEnumField("exceptCode", 1, _modbus_exceptions)]
class ModbusPDU18ReadFIFOQueueRequest(Packet): name = "Read FIFO Queue" fields_desc = [XByteField("funcCode", 0x18), XShortField("FIFOPointerAddr", 0x0000)]
class ModbusPDU16MaskWriteRegisterError(Packet): name = "Mask Write Register Exception" fields_desc = [XByteField("funcCode", 0x96), ByteEnumField("exceptCode", 1, _modbus_exceptions)]
class ModbusPDU01ReadCoilsRequest(_ModbusPDUNoPayload): name = "Read Coils Request" fields_desc = [XByteField("funcCode", 0x01), XShortField("startAddr", 0x0000), # 0x0000 to 0xFFFF XShortField("quantity", 0x0001)]
class ModbusPDU16MaskWriteRegisterResponse(Packet): name = "Mask Write Register Response" fields_desc = [XByteField("funcCode", 0x16), XShortField("refAddr", 0x0000), XShortField("andMask", 0xffff), XShortField("orMask", 0x0000)]
class CDPMsgTrustBitmap(CDPMsgGeneric): name = "Trust Bitmap" fields_desc = [XShortEnumField("type", 0x0012, _cdp_tlv_types), ShortField("len", 5), XByteField("trust_bitmap", 0x0)]
class ModbusPDU2B0EReadDeviceIdentificationError(Packet): name = "Read Exception Status Exception" fields_desc = [XByteField("funcCode", 0xAB), ByteEnumField("exceptCode", 1, _modbus_exceptions)]
class CDPMsgUntrustedPortCoS(CDPMsgGeneric): name = "Untrusted Port CoS" fields_desc = [XShortEnumField("type", 0x0013, _cdp_tlv_types), ShortField("len", 5), XByteField("untrusted_port_cos", 0x0)]
class ModbusPDU01ReadCoilsError(_ModbusPDUNoPayload): name = "Read Coils Exception" fields_desc = [XByteField("funcCode", 0x81), ByteEnumField("exceptCode", 1, _modbus_exceptions)]
class LL_UNKNOWN_RSP(Packet): name = 'LL_UNKNOWN_RSP' fields_desc = [ XByteField("code", 0x0), ]
class ModbusPDU02ReadDiscreteInputsRequest(_ModbusPDUNoPayload): name = "Read Discrete Inputs" fields_desc = [XByteField("funcCode", 0x02), XShortField("startAddr", 0x0000), XShortField("quantity", 0x0001)]
class HDLC(Packet): fields_desc = [XByteField("address", 0xff), XByteField("control", 0x03)]
class ModbusPDU02ReadDiscreteInputsError(Packet): name = "Read Discrete Inputs Exception" fields_desc = [XByteField("funcCode", 0x82), ByteEnumField("exceptCode", 1, _modbus_exceptions)]
class GMLAN_RDI_BC(Packet): name = 'SendOnChangeDTCCount' fields_desc = [ XByteField('DTCStatusMask', 0), ]
class ModbusPDU03ReadHoldingRegistersRequest(_ModbusPDUNoPayload): name = "Read Holding Registers" fields_desc = [XByteField("funcCode", 0x03), XShortField("startAddr", 0x0000), XShortField("quantity", 0x0001)]
class SCTPChunkShutdown(_SCTPChunkGuessPayload, Packet): fields_desc = [ByteEnumField("type", 7, sctpchunktypes), XByteField("flags", None), ShortField("len", 8), XIntField("cumul_tsn_ack", None), ]
class GMLAN_DDM(Packet): name = 'DynamicallyDefineMessage' fields_desc = [ XByteField('DPIDIdentifier', 0), StrField('PIDData', b'\x00\x00') ]
class LLC(Packet): name = "LLC" fields_desc = [XByteField("dsap", 0x00), XByteField("ssap", 0x00), ByteField("ctrl", 0)]
class GMLAN_DDMPR(Packet): name = 'DynamicallyDefineMessagePositiveResponse' fields_desc = [ XByteField('DPIDIdentifier', 0) ]
class OBD_S08(Packet): name = "S8_RequestControlOfSystem" fields_desc = [FieldListField("tid", [0], XByteField('', 0))]
class ModbusPDU11ReportSlaveIdError(Packet): name = "Report Slave Id Exception" fields_desc = [XByteField("funcCode", 0x91), ByteEnumField("exceptCode", 1, _modbus_exceptions)]