- scsi_cmd_set(udev, &sc, 0, 0x46);
- scsi_cmd_set(udev, &sc, 1, 0);
- scsi_cmd_set(udev, &sc, 8, sizeof(header));
- scsi_cmd_set(udev, &sc, 9, 0);
- err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
- if ((err < 0)) {
- info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
- return -1;
- }
-
- len = 4 + (header[0] << 24 | header[1] << 16 | header[2] << 8 | header[3]);
- info(udev, "GET CONFIGURATION: number of profiles %i\n", len);
- if (len > sizeof(profiles)) {
- info(udev, "invalid number of profiles\n");
- return -1;
- }
-
- scsi_cmd_set(udev, &sc, 0, 0x46);
- scsi_cmd_set(udev, &sc, 1, 1);
- scsi_cmd_set(udev, &sc, 6, len >> 16);
- scsi_cmd_set(udev, &sc, 7, len >> 8);
- scsi_cmd_set(udev, &sc, 8, len);
- scsi_cmd_set(udev, &sc, 9, 0);
- err = scsi_cmd_run(udev, &sc, fd, profiles, len);
- if ((err < 0)) {
- info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
- return -1;
- }
-
- /* device profiles */
- for (i = 12; i < profiles[11]; i += 4) {
- unsigned int profile = (profiles[i] << 8 | profiles[i + 1]);
- if (profile == 0)
- continue;
- info(udev, "profile 0x%02x\n", profile);