]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/udev/scsi_id/scsi.h
tty-ask-password: Split out password sending
[thirdparty/systemd.git] / src / udev / scsi_id / scsi.h
1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3 /*
4 * scsi.h
5 *
6 * General scsi and linux scsi specific defines and structs.
7 *
8 * Copyright (C) IBM Corp. 2003
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation version 2 of the License.
13 */
14
15 #pragma once
16
17 #include <scsi/scsi.h>
18
19 struct scsi_ioctl_command {
20 unsigned int inlen; /* excluding scsi command length */
21 unsigned int outlen;
22 unsigned char data[1];
23 /* on input, scsi command starts here then opt. data */
24 };
25
26 /*
27 * Default 5 second timeout
28 */
29 #define DEF_TIMEOUT 5000
30
31 #define SENSE_BUFF_LEN 32
32
33 /*
34 * The request buffer size passed to the SCSI INQUIRY commands, use 254,
35 * as this is a nice value for some devices, especially some of the usb
36 * mass storage devices.
37 */
38 #define SCSI_INQ_BUFF_LEN 254
39
40 /*
41 * SCSI INQUIRY vendor and model (really product) lengths.
42 */
43 #define VENDOR_LENGTH 8
44 #define MODEL_LENGTH 16
45
46 #define INQUIRY_CMD 0x12
47 #define INQUIRY_CMDLEN 6
48
49 /*
50 * INQUIRY VPD page 0x83 identifier descriptor related values. Reference the
51 * SCSI Primary Commands specification for details.
52 */
53
54 /*
55 * id type values of id descriptors. These are assumed to fit in 4 bits.
56 */
57 #define SCSI_ID_VENDOR_SPECIFIC 0
58 #define SCSI_ID_T10_VENDOR 1
59 #define SCSI_ID_EUI_64 2
60 #define SCSI_ID_NAA 3
61 #define SCSI_ID_RELPORT 4
62 #define SCSI_ID_TGTGROUP 5
63 #define SCSI_ID_LUNGROUP 6
64 #define SCSI_ID_MD5 7
65 #define SCSI_ID_NAME 8
66
67 /*
68 * Supported NAA values. These fit in 4 bits, so the "don't care" value
69 * cannot conflict with real values.
70 */
71 #define SCSI_ID_NAA_DONT_CARE 0xff
72 #define SCSI_ID_NAA_IEEE_REG 0x05
73 #define SCSI_ID_NAA_IEEE_REG_EXTENDED 0x06
74
75 /*
76 * Supported Code Set values.
77 */
78 #define SCSI_ID_BINARY 1
79 #define SCSI_ID_ASCII 2
80
81 struct scsi_id_search_values {
82 u_char id_type;
83 u_char naa_type;
84 u_char code_set;
85 };
86
87 /*
88 * Following are the "true" SCSI status codes. Linux has traditionally
89 * used a 1 bit right and masked version of these. So now CHECK_CONDITION
90 * and friends (in <scsi/scsi.h>) are deprecated.
91 */
92 #define SCSI_CHECK_CONDITION 0x02
93 #define SCSI_CONDITION_MET 0x04
94 #define SCSI_BUSY 0x08
95 #define SCSI_IMMEDIATE 0x10
96 #define SCSI_IMMEDIATE_CONDITION_MET 0x14
97 #define SCSI_RESERVATION_CONFLICT 0x18
98 #define SCSI_COMMAND_TERMINATED 0x22
99 #define SCSI_TASK_SET_FULL 0x28
100 #define SCSI_ACA_ACTIVE 0x30
101 #define SCSI_TASK_ABORTED 0x40