Ejemplo n.º 1
0
class NAA_IEEE_Registered_Designator(NAA_Descriptor):
    ieee_company_id = be_uint_field(where=(bytes_ref[7].bits[4:8] +
                                           bytes_ref[6] + bytes_ref[5] +
                                           bytes_ref[4].bits[0:4]))
    vendor_specific_identifier = be_uint_field(
        where=(bytes_ref[11] + bytes_ref[10] + bytes_ref[9] + bytes_ref[8] +
               bytes_ref[7].bits[0:4]))
Ejemplo n.º 2
0
class UnknownVPDPageBuffer(Buffer):
    peripheral_device = buffer_field(where=bytes_ref[0:],
                                     type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[2:4],
                                set_before_pack=len_ref(self_ref.page_data))
    page_data = list_field(where=bytes_ref[4:4 + page_length], type=b_uint8)
Ejemplo n.º 3
0
class UnitSerialNumberVPDPageBuffer(Buffer):
    peripheral_device = buffer_field(where=bytes_ref[0:],
                                     type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[3],
                                set_before_pack=len_ref(
                                    self_ref.product_serial_number))
    product_serial_number = str_field(where=bytes_ref[4:4 + page_length])
Ejemplo n.º 4
0
class StringInquiryPageBuffer(Buffer):
    peripheral_device = buffer_field(where=bytes_ref[0:],
                                     type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[2:4],
                                set_before_pack=len_ref(self_ref.string))
    string = str_field(where=bytes_ref[4:4 + page_length],
                       unpack_after=page_length)
Ejemplo n.º 5
0
class SupportedVPDPagesBuffer(Buffer):
    peripheral_device = buffer_field(where=bytes_ref[0:],
                                     type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[3])

    vpd_parameters = list_field(where=bytes_ref[4:],
                                type=b_uint8,
                                n=page_length)
Ejemplo n.º 6
0
class JSONInquiryPageBuffer(Buffer):
    def _calc_json_length(self):
        import json
        return len(json.dumps(self.json_data))

    peripheral_device = buffer_field(where=bytes_ref[0:],
                                     type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[2:4],
                                set_before_pack=self_ref._calc_json_length())
    json_data = json_field(where=bytes_ref[4:4 + page_length],
                           unpack_after=page_length)
Ejemplo n.º 7
0
class VeritasVPDPageBuffer(Buffer):
    peripheral_device = buffer_field(where=bytes_ref[0:],
                                     type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[2:4])

    is_thin_lun = be_uint_field(where=bytes_ref[4].bits[0])
    is_snapshot_lun = be_uint_field(where=bytes_ref[4].bits[1])
    is_space_optimized_src = be_uint_field(where=bytes_ref[4].bits[2])
    is_fcdisk_lun = be_uint_field(where=bytes_ref[4].bits[3])
    is_satadisk_lun = be_uint_field(where=bytes_ref[4].bits[4])
    is_replication_src = be_uint_field(where=bytes_ref[4].bits[5])
    is_replication_dst = be_uint_field(where=bytes_ref[4].bits[6])
    raid_type = be_uint_field(where=bytes_ref[5])
Ejemplo n.º 8
0
class T10VendorIDDesignator(DesignatorDescriptor):
    designator_length = be_uint_field(where=bytes_ref[3],
                                      set_before_pack=len_ref(
                                          self_ref.vendor_specific_identifier))
    t10_vendor_identification = str_field(where=bytes_ref[4:12])
    vendor_specific_identifier = bytearray_field(
        where=bytes_ref[12:4 + designator_length])
Ejemplo n.º 9
0
class DesignatorDescriptor(Buffer):
    code_set = be_uint_field(where=bytes_ref[0].bits[0:4])
    protocol_identifier = be_uint_field(where=bytes_ref[0].bits[4:8])
    designator_type = be_uint_field(where=bytes_ref[1].bits[0:4])
    association = be_uint_field(where=bytes_ref[1].bits[4:6])
    piv = be_uint_field(where=bytes_ref[1].bits[7])
    reserved = be_uint_field(where=bytes_ref[2])
    designator_length = be_uint_field(where=bytes_ref[3])
class LogicalBlockProvisioningVPDPageBuffer(Buffer):
    peripheral_device = buffer_field(where=bytes_ref[0:], type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[2:4])

    threshold_exponent = be_uint_field(where=bytes_ref[4])
    # bit-field
    dp = be_uint_field(where=bytes_ref[5].bits[0])
    anc_sup = be_uint_field(where=bytes_ref[5].bits[1])
    lbprz = be_uint_field(where=bytes_ref[5].bits[2])
    # reserved
    lbpws10 = be_uint_field(where=bytes_ref[5].bits[5])
    lbpws = be_uint_field(where=bytes_ref[5].bits[6])
    lbpu = be_uint_field(where=bytes_ref[5].bits[7])
    provisioning_type = be_uint_field(where=bytes_ref[6].bits[0:3])
    # reserved
    provisioning_group_descriptor = buffer_field(where=bytes_ref[8:], type=DesignatorDescriptor,
                                                 unpack_selector=determine_designator,
                                                 unpack_if=input_buffer_length>8)
Ejemplo n.º 11
0
class EnclosureDescriptor(Buffer):
    enclosure_services_processes_num = be_int_field(
        where=bytes_ref[0].bits[0:3])
    relative_enclosure_services_process_identifier = be_int_field(
        where=bytes_ref[0].bits[4:7])
    subenclosure_identifier = be_int_field(where=bytes_ref[1])
    type_descriptor_headers_num = be_int_field(where=bytes_ref[2])
    enclosure_descriptor_length = be_uint_field(where=bytes_ref[3])
    enclosure_logical_identifier = bytearray_field(where=bytes_ref[4:12])
    enclosure_vendor_identification = str_field(where=bytes_ref[12:20])
    product_identification = str_field(where=bytes_ref[20:36])
    product_revision_level = str_field(where=bytes_ref[36:40])
    vendor_specific_enclosure_information = bytearray_field(
        where_when_pack=bytes_ref[40:],
        where_when_unpack=bytes_ref[40:enclosure_descriptor_length + 4])
Ejemplo n.º 12
0
class ReceiveDiagnosticResultCommand(CDBBuffer):
    opcode = be_int_field(where=bytes_ref[0], set_before_pack=CDB_RECEIVE_DIAGNOSTIC_RESULTS)
    pcv = be_int_field(where=bytes_ref[1].bits[0])
    page_code = be_uint_field(where=bytes_ref[2])
    allocation_length = be_int_field(where=bytes_ref[3:5], sign='unsigned')
    control = buffer_field(type=ControlBuffer, where=bytes_ref[5], set_before_pack=DEFAULT_CONTROL_BUFFER)

    def __init__(self, result_class, conf_page, *args, **kwargs):
        super(ReceiveDiagnosticResultCommand, self).__init__(*args, **kwargs)
        self.result_class = result_class
        self.conf_page = conf_page

    def execute(self, executer):
        datagram = self.create_datagram()
        result_datagram = yield executer.call(SCSIReadCommand(bytes(datagram), self.allocation_length))
        result = self.result_class(conf_page=self.conf_page)
        result.unpack(result_datagram)
        yield result
Ejemplo n.º 13
0
class LogicalUnitGroupDesignator(DesignatorDescriptor):
    logical_unit_group = be_uint_field(where=bytes_ref[6:8])
Ejemplo n.º 14
0
class TargetPortGroupDesignator(DesignatorDescriptor):
    target_port_group = be_uint_field(where=bytes_ref[6:8])
Ejemplo n.º 15
0
class RelativeTargetPortDesignator(DesignatorDescriptor):
    relative_target_port_identifier = be_uint_field(where=bytes_ref[6:8])
Ejemplo n.º 16
0
class NAA_IEEE_Registered_Extended_Designator(NAA_IEEE_Registered_Designator):
    vendor_specific_identifier_extension = be_uint_field(
        where=bytes_ref[12:20])
Ejemplo n.º 17
0
class DeviceIdentificationVPDPageBuffer(Buffer):
    peripheral_device = buffer_field(where=bytes_ref[0:], type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[2:4])
    designators_list = list_field(where=bytes_ref[4:4+page_length], type=DesignatorDescriptor,
                                  unpack_selector=determine_designator, unpack_after=page_length)
Ejemplo n.º 18
0
class NAA_Locally_Assigned_Designator(NAA_Descriptor):
    locally_administered_value = be_uint_field(
        where=(bytes_ref[11] + bytes_ref[10] + bytes_ref[9] + bytes_ref[8] +
               bytes_ref[7] + bytes_ref[6] + bytes_ref[5] +
               bytes_ref[4].bits[0:4]))
Ejemplo n.º 19
0
class SCSINameDesignator(DesignatorDescriptor):
    designator_length = be_uint_field(where=bytes_ref[3],
                                      set_before_pack=len_ref(
                                          self_ref.scsi_name_string))
    scsi_name_string = bytearray_field(where=bytes_ref[4:4 +
                                                       designator_length])
Ejemplo n.º 20
0
class MD5LogicalUnitDesignator(DesignatorDescriptor):
    designator_length = be_uint_field(
        where=bytes_ref[3],
        set_before_pack=len_ref(self_ref.md5_logical_unit_identifier))
    md5_logical_unit_identifier = bytearray_field(
        where=bytes_ref[4:4 + designator_length])
Ejemplo n.º 21
0
class EUI64_12Byte_Designator(EUI64_Designator):
    directory_id = be_uint_field(where=bytes_ref[12:16])
Ejemplo n.º 22
0
class EUI64_Designator(DesignatorDescriptor):
    ieee_company = be_uint_field(where=bytes_ref[4:7])
    vendor_specific_extension_identifer = be_uint_field(where=bytes_ref[7:12])
Ejemplo n.º 23
0
class Reserved_Designator(DesignatorDescriptor):
    designator_length = be_uint_field(where=bytes_ref[3],
                                      set_before_pack=len_ref(
                                          self_ref.designator))
    desginator = str_field(where=bytes_ref[4:4 + designator_length])
Ejemplo n.º 24
0
class VendorSpecificDesignator(DesignatorDescriptor):
    designator_length = be_uint_field(where=bytes_ref[3],
                                      set_before_pack=len_ref(
                                          self_ref.vendor_specific_identifier))
    vendor_specific_identifier = bytearray_field(
        where=bytes_ref[4:4 + designator_length])
Ejemplo n.º 25
0
class BlockLimitsVPDPageBuffer(Buffer):
    peripheral_device = buffer_field(where=bytes_ref[0:],
                                     type=PeripheralDeviceDataBuffer)
    page_code = be_uint_field(where=bytes_ref[1])
    page_length = be_uint_field(where=bytes_ref[2:4])
    wsnz = be_uint_field(where=bytes_ref[4].bits[0])
    maximum_compare_and_write_length = be_uint_field(where=bytes_ref[5])
    optimal_transfer_length_granularity = be_uint_field(where=bytes_ref[6:8])
    maximum_transfer_length = be_uint_field(where=bytes_ref[8:12])
    optimal_transfer_length = be_uint_field(where=bytes_ref[12:16])
    maximum_prefetch_xdread_xdwrite_transfer_length = be_uint_field(
        where=bytes_ref[16:20])
    maximum_unmap_lba_count = be_uint_field(where=bytes_ref[20:24])
    maximum_unmap_block_descriptor_count = be_uint_field(
        where=bytes_ref[24:28])
    optimal_unmap_granularity = be_uint_field(where=bytes_ref[28:32])
    unmap_granularity_alignment = be_uint_field(
        where=(bytes_ref[35] + bytes_ref[34] + bytes_ref[33] +
               bytes_ref[32].bits[0:7]))
    ugavalid = be_uint_field(where=bytes_ref[32].bits[7])
    maximum_write_same_length = be_uint_field(where=bytes_ref[36:44])
Ejemplo n.º 26
0
class NAA_Descriptor(DesignatorDescriptor):
    naa = be_uint_field(where=bytes_ref[4].bits[4:8])
Ejemplo n.º 27
0
class EUI64_16Byte_Designator(DesignatorDescriptor):
    identifier_extension = be_uint_field(where=bytes_ref[4:12])
    ieee_company = be_uint_field(where=bytes_ref[12:15])
    vendor_specific_extension_identifer = be_uint_field(where=bytes_ref[15:20])
Ejemplo n.º 28
0
class NAA_IEEE_Extended_Designator(NAA_Descriptor):
    vendor_specific_identifier_a = be_uint_field(
        where=(bytes_ref[5] + bytes_ref[4].bits[0:4]))
    ieee_company = be_uint_field(where=bytes_ref[6:9])
    vendor_specific_identifier_b = be_uint_field(where=bytes_ref[9:12])