diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2021-09-04 17:23:12 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2021-09-04 17:23:12 +0000 |
commit | 15a477c9f6730cd98e40bbdbb0511cdf3a3c4319 (patch) | |
tree | 0a1cf10f69306878863481efa57b72170ba4cb26 /src | |
parent | 7144ac65deef1369c1c754c2e561c813878ab046 (diff) | |
download | sg3_utils-15a477c9f6730cd98e40bbdbb0511cdf3a3c4319.tar.gz |
sg_xcopy: tweak CSCD identification descriptor
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@912 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'src')
-rw-r--r-- | src/sg_xcopy.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/sg_xcopy.c b/src/sg_xcopy.c index e691a73e..1fb09c49 100644 --- a/src/sg_xcopy.c +++ b/src/sg_xcopy.c @@ -1,7 +1,7 @@ /* A utility program for copying files. Similar to 'dd' but using * the 'Extended Copy' command. * - * Copyright (c) 2011-2020 Hannes Reinecke, SUSE Labs + * Copyright (c) 2011-2021 Hannes Reinecke, SUSE Labs * * Largely taken from 'sg_dd', which has the * @@ -69,7 +69,7 @@ #include "sg_unaligned.h" #include "sg_pr2serr.h" -static const char * version_str = "0.71 20200510"; +static const char * version_str = "0.72 20210902"; #define ME "sg_xcopy: " @@ -1075,27 +1075,27 @@ desc_from_vpd_id(int sg_fd, uint8_t *desc, int desc_len, if (verbose > 2) pr2serr(" Desc %d: assoc %u desig %u len %d\n", off, assoc, desig, i_len); - /* Descriptor must be less than 16 bytes */ - if (i_len > 16) + /* Identification descriptor's Designator length must be <= 20. */ + if (i_len > 20) continue; - if (desig == 3) { + if (desig == /*NAA=*/3) { best = bp; best_len = i_len; break; } - if (desig == 2) { + if (desig == /*EUI64=*/2) { if (!best || f_desig < 2) { best = bp; best_len = i_len; f_desig = 2; } - } else if (desig == 1) { + } else if (desig == /*T10*/1) { if (!best || f_desig == 0) { best = bp; best_len = i_len; f_desig = desig; } - } else if (desig == 0) { + } else if (desig == /*vend.spec.=*/0) { if (!best) { best = bp; best_len = i_len; @@ -1108,9 +1108,10 @@ desc_from_vpd_id(int sg_fd, uint8_t *desc, int desc_len, decode_designation_descriptor(best, best_len); if (best_len + 4 < desc_len) { memset(desc, 0, 32); - desc[0] = 0xe4; + desc[0] = 0xe4; /* Identification Descriptor */ memcpy(desc + 4, best, best_len + 4); - desc[4] &= 0x1f; + desc[4] &= 0x0f; /* code set */ + desc[5] &= 0x3f; /* association and designator type */ if (pad) desc[28] = 0x4; sg_put_unaligned_be24((uint32_t)block_size, desc + 29); |