18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2011 matt mooney <mfm@muteddisk.com>
48c2ecf20Sopenharmony_ci *               2005-2007 Takahiro Hirofuchi
58c2ecf20Sopenharmony_ci */
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#include "vhci_driver.h"
88c2ecf20Sopenharmony_ci#include "usbip_common.h"
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cistatic int list_imported_devices(void)
118c2ecf20Sopenharmony_ci{
128c2ecf20Sopenharmony_ci	int i;
138c2ecf20Sopenharmony_ci	struct usbip_imported_device *idev;
148c2ecf20Sopenharmony_ci	int ret;
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci	if (usbip_names_init(USBIDS_FILE))
178c2ecf20Sopenharmony_ci		err("failed to open %s", USBIDS_FILE);
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci	ret = usbip_vhci_driver_open();
208c2ecf20Sopenharmony_ci	if (ret < 0) {
218c2ecf20Sopenharmony_ci		err("open vhci_driver");
228c2ecf20Sopenharmony_ci		goto err_names_free;
238c2ecf20Sopenharmony_ci	}
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci	printf("Imported USB devices\n");
268c2ecf20Sopenharmony_ci	printf("====================\n");
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	for (i = 0; i < vhci_driver->nports; i++) {
298c2ecf20Sopenharmony_ci		idev = &vhci_driver->idev[i];
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci		if (usbip_vhci_imported_device_dump(idev) < 0)
328c2ecf20Sopenharmony_ci			goto err_driver_close;
338c2ecf20Sopenharmony_ci	}
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci	usbip_vhci_driver_close();
368c2ecf20Sopenharmony_ci	usbip_names_free();
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci	return ret;
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_cierr_driver_close:
418c2ecf20Sopenharmony_ci	usbip_vhci_driver_close();
428c2ecf20Sopenharmony_cierr_names_free:
438c2ecf20Sopenharmony_ci	usbip_names_free();
448c2ecf20Sopenharmony_ci	return -1;
458c2ecf20Sopenharmony_ci}
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ciint usbip_port_show(__attribute__((unused)) int argc,
488c2ecf20Sopenharmony_ci		    __attribute__((unused)) char *argv[])
498c2ecf20Sopenharmony_ci{
508c2ecf20Sopenharmony_ci	int ret;
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci	ret = list_imported_devices();
538c2ecf20Sopenharmony_ci	if (ret < 0)
548c2ecf20Sopenharmony_ci		err("list imported devices");
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci	return ret;
578c2ecf20Sopenharmony_ci}
58