diff options
author | Dan McDonald <danmcd@mnx.io> | 2022-11-06 23:04:04 -0500 |
---|---|---|
committer | Dan McDonald <danmcd@mnx.io> | 2022-11-06 23:04:04 -0500 |
commit | d6e6c033222e8067ec1dfeb10a4ee03139b6168c (patch) | |
tree | 404802c4b32f00af2021b6dcdcfc6c3c501b9826 /usr/src/lib/cfgadm_plugins/usb/common/cfga_usb.c | |
parent | 33edda4c44df77895e91c50a9a02028873cd0ee6 (diff) | |
parent | 1fde93bfc5537d4261d6ef3ac9db44a76d697e75 (diff) | |
download | illumos-joyent-d6e6c033222e8067ec1dfeb10a4ee03139b6168c.tar.gz |
[illumos-gate merge]
commit 1fde93bfc5537d4261d6ef3ac9db44a76d697e75
14489 bhyve should emulate imul
commit 77ef2e2dc992015d6c68f5923c0216f6d000fc96
15120 dtest missing dependency on CPU counters
commit 5fcf5f8704b3d1b7e6175f9cb17fea58f5e56cdb
15119 truss could support IP, IPv6 sockopts
15115 IP_DONTFRAG could use docs
commit 0accf5554adfa8ff02c02d58042253bfa597bfa2
15114 IP_DONTFRAG more like IP please frag
commit b18d44ce328fbdf8d8c82ef1763d30b8a46edfde
14535 cfgadm_usb(8) should provide iSerialNumber in -v output
commit 4f3f3e9a1dee62c031fa67cfe64e11d6dd3fab1b
14763 bhyve upstream sync 2022 August
commit cfed4d7055842c539437036c634e7fe84d10977d
15085 mech_krb5: memory leaked during context establishment
commit 549ab26f262a63e8892b99d530a98fea6423ad63
15084 SMBD leaks memory during startup/refresh
commit 56a2adb63cd7b5ba73bb3f0fb3930b2d2730513e
15082 SMB Clients see but can't access restricted named streams
commit 66a9cc68640459b14e330f94bcab980ef58fd66d
14957 pcieadm overloads header1.iobasehi
Diffstat (limited to 'usr/src/lib/cfgadm_plugins/usb/common/cfga_usb.c')
-rw-r--r-- | usr/src/lib/cfgadm_plugins/usb/common/cfga_usb.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/usr/src/lib/cfgadm_plugins/usb/common/cfga_usb.c b/usr/src/lib/cfgadm_plugins/usb/common/cfga_usb.c index 47976fb058..663cd02f09 100644 --- a/usr/src/lib/cfgadm_plugins/usb/common/cfga_usb.c +++ b/usr/src/lib/cfgadm_plugins/usb/common/cfga_usb.c @@ -22,9 +22,9 @@ * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * Copyright 2018 OmniOS Community Edition (OmniOSce) Association. + * Copyright 2022 Oxide Computer Company */ - #include "cfga_usb.h" @@ -889,12 +889,14 @@ fill_in_ap_info(const char *ap_id, char *info_buf, size_t info_size) { char *mfg_str = NULL; /* iManufacturer */ char *prod_str = NULL; /* iProduct */ + char *serial_str = NULL; /* iSerialNumber */ char *cfg_descr = NULL; /* iConfiguration */ uint_t config; /* curr cfg index */ size_t size; /* tmp stuff */ boolean_t flag; /* wether to print ":" or not */ boolean_t free_mfg_str = B_FALSE; boolean_t free_prod_str = B_FALSE; + boolean_t free_serial_str = B_FALSE; boolean_t free_cfg_str = B_FALSE; cfga_usb_ret_t rv = CFGA_USB_OK; usb_dev_descr_t *dev_descrp = NULL; /* device descriptor */ @@ -938,6 +940,22 @@ fill_in_ap_info(const char *ap_id, char *info_buf, size_t info_size) free_prod_str = B_TRUE; } + /* iSerialNumber */ + serial_str = USB_UNDEF_STR; + if (dev_descrp->iSerialNumber != 0) { + if ((rv = do_control_ioctl(ap_id, USB_DESCR_TYPE_STRING, + HUBD_SERIALNO_STR, (void **)&serial_str, + &size)) != CFGA_USB_OK) { + if (rv == CFGA_USB_ZEROLEN) { + rv = CFGA_USB_OK; + } else { + DPRINTF("getting iSerialNumber failed\n"); + goto bailout; + } + } + free_serial_str = B_TRUE; + } + /* Current conifguration */ if ((rv = get_config(ap_id, &config)) != CFGA_USB_OK) { DPRINTF("get_config failed\n"); @@ -968,8 +986,9 @@ fill_in_ap_info(const char *ap_id, char *info_buf, size_t info_size) /* Dump local buf into passed-in buf. */ (void) snprintf(info_buf, info_size, - "Mfg: %s Product: %s NConfigs: %d Config: %d %s%s", mfg_str, - prod_str, dev_descrp->bNumConfigurations, config, + "Mfg: %s Product: %s Serial: %s NConfigs: %d Config: %d %s%s", + mfg_str, prod_str, serial_str, + dev_descrp->bNumConfigurations, config, (flag == B_TRUE) ? ": " : "", cfg_descr); bailout: @@ -985,6 +1004,10 @@ bailout: free(prod_str); } + if ((free_serial_str == B_TRUE) && serial_str) { + free(serial_str); + } + if ((free_cfg_str == B_TRUE) && cfg_descr) { free(cfg_descr); } |