summaryrefslogtreecommitdiff
path: root/usr/src/common/devid/devid_scsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/common/devid/devid_scsi.c')
-rw-r--r--usr/src/common/devid/devid_scsi.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/usr/src/common/devid/devid_scsi.c b/usr/src/common/devid/devid_scsi.c
index 45aaacbf0d..6b2574a8db 100644
--- a/usr/src/common/devid/devid_scsi.c
+++ b/usr/src/common/devid/devid_scsi.c
@@ -41,6 +41,9 @@
#include <sys/dditypes.h>
#include <sys/ddi_impldefs.h>
#include <sys/scsi/scsi.h>
+#ifndef _KERNEL
+#include <sys/libdevid.h>
+#endif /* !_KERNEL */
#include "devid_impl.h"
#define SCSI_INQUIRY_VID_POS 9
@@ -1244,8 +1247,7 @@ scsi_wwnstr_to_wwn(const char *wwnstr, uint64_t *wwnp)
return (DDI_FAILURE);
/* Skip leading 'w' if wwnstr is in unit-address form */
- if (*wwnstr == 'w')
- wwnstr++;
+ wwnstr = scsi_wwnstr_skip_ua_prefix(wwnstr);
if (strlen(wwnstr) != 16)
return (DDI_FAILURE);
@@ -1328,6 +1330,23 @@ scsi_wwnstr_hexcase(char *wwnstr, int upper_case_hex)
}
/*
+ * Function: scsi_wwnstr_skip_ua_prefix
+ *
+ * Description: This routine removes the leading 'w' in wwnstr,
+ * if its in unit-address form.
+ *
+ * Arguments: wwnstr - the string wwn to be transformed
+ *
+ */
+const char *
+scsi_wwnstr_skip_ua_prefix(const char *wwnstr)
+{
+ if (*wwnstr == 'w')
+ wwnstr++;
+ return (wwnstr);
+}
+
+/*
* Function: scsi_wwnstr_free
*
* Description: This routine frees a wwnstr returned by a call