diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2019-01-11 06:11:25 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2019-01-11 06:11:25 +0000 |
commit | 2433a22138f1b508c2765aa8499456cd6138a200 (patch) | |
tree | cf41a311a4230b908c6c14726bcfeae431bfdb48 /src/sg_vpd.c | |
parent | 284fbfc7e0eb7b53b3ab7a9872aa1416685de785 (diff) | |
download | sg3_utils-2433a22138f1b508c2765aa8499456cd6138a200.tar.gz |
spc5r20 updates; fixes for FreeBSD 12.0 release
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@804 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'src/sg_vpd.c')
-rw-r--r-- | src/sg_vpd.c | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/src/sg_vpd.c b/src/sg_vpd.c index 70e1fddf..04d5110d 100644 --- a/src/sg_vpd.c +++ b/src/sg_vpd.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018 Douglas Gilbert. + * Copyright (c) 2006-2019 Douglas Gilbert. * All rights reserved. * Use of this source code is governed by a BSD-style * license that can be found in the BSD_LICENSE file. @@ -40,7 +40,7 @@ */ -static const char * version_str = "1.48 20180910"; /* spc5r19 + sbc4r15 */ +static const char * version_str = "1.49 20190109"; /* spc5r20 + sbc4r15 */ /* standard VPD pages, in ascending page number order */ #define VPD_SUPPORTED_VPDS 0x0 @@ -1268,7 +1268,7 @@ decode_x_inq_vpd(uint8_t * b, int len, int do_hex, bool do_long, printf(" POA_SUP=%d\n", !!(b[12] & 0x80)); /* spc4r32 */ printf(" HRA_SUP=%d\n", !!(b[12] & 0x40)); /* spc4r32 */ printf(" VSA_SUP=%d\n", !!(b[12] & 0x20)); /* spc4r32 */ - printf(" DMS_VALID=%d\n", !!(b[12] & 0x10)); /* 17-142r5 */ + printf(" DMS_VALID=%d\n", !!(b[12] & 0x10)); /* spc5r20 */ printf(" Maximum supported sense data length=%d\n", b[13]); /* spc4r34 */ printf(" IBS=%d\n", !!(b[14] & 0x80)); /* spc5r09 */ @@ -1280,13 +1280,13 @@ decode_x_inq_vpd(uint8_t * b, int len, int do_hex, bool do_long, sg_get_unaligned_be16(b + 15)); /* spc5r17 */ printf(" Maximum mode page change logs=%u\n", sg_get_unaligned_be16(b + 17)); /* spc5r17 */ - printf(" DM_MD_4=%d\n", !!(b[19] & 0x80)); /* 17-142r5 */ - printf(" DM_MD_5=%d\n", !!(b[19] & 0x40)); /* 17-142r5 */ - printf(" DM_MD_6=%d\n", !!(b[19] & 0x20)); /* 17-142r5 */ - printf(" DM_MD_7=%d\n", !!(b[19] & 0x10)); /* 17-142r5 */ - printf(" DM_MD_D=%d\n", !!(b[19] & 0x8)); /* 17-142r5 */ - printf(" DM_MD_E=%d\n", !!(b[19] & 0x4)); /* 17-142r5 */ - printf(" DM_MD_F=%d\n", !!(b[19] & 0x2)); /* 17-142r5 */ + printf(" DM_MD_4=%d\n", !!(b[19] & 0x80)); /* spc5r20 */ + printf(" DM_MD_5=%d\n", !!(b[19] & 0x40)); /* spc5r20 */ + printf(" DM_MD_6=%d\n", !!(b[19] & 0x20)); /* spc5r20 */ + printf(" DM_MD_7=%d\n", !!(b[19] & 0x10)); /* spc5r20 */ + printf(" DM_MD_D=%d\n", !!(b[19] & 0x8)); /* spc5r20 */ + printf(" DM_MD_E=%d\n", !!(b[19] & 0x4)); /* spc5r20 */ + printf(" DM_MD_F=%d\n", !!(b[19] & 0x2)); /* spc5r20 */ return; } printf(" ACTIVATE_MICROCODE=%d SPT=%d GRD_CHK=%d APP_CHK=%d " @@ -1309,7 +1309,7 @@ decode_x_inq_vpd(uint8_t * b, int len, int do_hex, bool do_long, sg_get_unaligned_be16(b + 10)); /* spc4r27 */ printf(" POA_SUP=%d HRA_SUP=%d VSA_SUP=%d DMS_VALID=%d\n", !!(b[12] & 0x80), !!(b[12] & 0x40), !!(b[12] & 0x20), - !!(b[12] & 0x10)); /* spc4r32 + 17-142r5 */ + !!(b[12] & 0x10)); /* spc5r20 */ printf(" Maximum supported sense data length=%d\n", b[13]); /* spc4r34 */ printf(" IBS=%d IAS=%d SAC=%d NRD1=%d NRD0=%d\n", !!(b[14] & 0x80), !!(b[14] & 0x40), !!(b[14] & 0x4), !!(b[14] & 0x2), @@ -1320,7 +1320,7 @@ decode_x_inq_vpd(uint8_t * b, int len, int do_hex, bool do_long, sg_get_unaligned_be16(b + 17)); /* spc5r17 */ printf(" DM_MD_4=%d DM_MD_5=%d DM_MD_6=%d DM_MD_7=%d\n", !!(b[19] & 0x80), !!(b[19] & 0x40), !!(b[19] & 0x20), - !!(b[19] & 0x10)); /* 17-142r5 */ + !!(b[19] & 0x10)); /* spc5r20 */ printf(" DM_MD_D=%d DM_MD_E=%d DM_MD_F=%d\n", !!(b[19] & 0x8), !!(b[19] & 0x4), !!(b[19] & 0x2)); } @@ -1763,12 +1763,12 @@ static void decode_3party_copy_vpd(uint8_t * buff, int len, int do_hex, int pdt, int verbose) { - int j, k, m, bump, desc_type, desc_len, sa_len; + int j, k, m, bump, desc_type, desc_len, sa_len, blen; unsigned int u; const uint8_t * bp; const char * cp; uint64_t ull; - char b[80]; + char b[120]; if (len < 4) { pr2serr("Third-party Copy VPD page length too short=%d\n", len); @@ -1778,6 +1778,7 @@ decode_3party_copy_vpd(uint8_t * buff, int len, int do_hex, int pdt, hex2stdout(buff, len, -1); return; } + blen = sizeof(b); len -= 4; bp = buff + 4; for (k = 0; k < len; k += bump, bp += bump) { @@ -1851,11 +1852,11 @@ decode_3party_copy_vpd(uint8_t * buff, int len, int do_hex, int pdt, sa_len = bp[6 + j]; for (m = 0; (m < sa_len) && ((j + m) < csll); ++m) { sg_get_opcode_sa_name(bp[5 + j], bp[7 + j + m], - pdt, sizeof(b), b); + pdt, blen, b); printf(" %s\n", b); } if (0 == sa_len) { - sg_get_opcode_name(bp[5 + j], pdt, sizeof(b), b); + sg_get_opcode_name(bp[5 + j], pdt, blen, b); printf(" %s\n", b); } else if (m < sa_len) pr2serr("Supported service actions list length (%d) " @@ -1895,6 +1896,13 @@ decode_3party_copy_vpd(uint8_t * buff, int len, int do_hex, int pdt, printf(" 0x%04x\n", u); } break; + case 0x000D: + printf(" Copy group identifier:\n"); + u = bp[4]; + sg_t10_uuid_desig2str(bp + 5, u, 1 /* c_set */, false, + false, NULL, blen, b); + printf("%s", b); + break; case 0x0106: printf(" ROD token features:\n"); printf(" Remote tokens: %d\n", bp[4] & 0x0f); |