Skip to content

Commit

Permalink
usbip: tools: add more error codes for usbip request/reply messages
Browse files Browse the repository at this point in the history
Currently ST_OK and ST_NA are the only values defined to communicate
status of a request from a client. Add more error codes to clearly
indicate what failed. For example, when client sends request to import
a device that isn't export-able, server can send a specific error code
to the client.

Existing defines are moved to a common header in libsrc to be included
in the libusbip_la-usbip_common.o to be used by all the usbip tools.
Supporting interface to print error strings is added to the common lib.

Signed-off-by: Shuah Khan <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Shuah Khan authored and gregkh committed Mar 9, 2018
1 parent 8fe8f58 commit f6bcbf2
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 3 deletions.
23 changes: 23 additions & 0 deletions tools/usb/usbip/libsrc/usbip_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,29 @@ const char *usbip_speed_string(int num)
return "Unknown Speed";
}

struct op_common_status_string {
int num;
char *desc;
};

static struct op_common_status_string op_common_status_strings[] = {
{ ST_OK, "Request Completed Successfully" },
{ ST_NA, "Request Failed" },
{ ST_DEV_BUSY, "Device busy (exported)" },
{ ST_DEV_ERR, "Device in error state" },
{ ST_NODEV, "Device not found" },
{ ST_ERROR, "Unexpected response" },
{ 0, NULL}
};

const char *usbip_op_common_status_string(int status)
{
for (int i = 0; op_common_status_strings[i].desc != NULL; i++)
if (op_common_status_strings[i].num == status)
return op_common_status_strings[i].desc;

return "Unknown Op Common Status";
}

#define DBG_UDEV_INTEGER(name)\
dbg("%-20s = %x", to_string(name), (int) udev->name)
Expand Down
11 changes: 11 additions & 0 deletions tools/usb/usbip/libsrc/usbip_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@
#define SYSFS_PATH_MAX 256
#define SYSFS_BUS_ID_SIZE 32

/* Defines for op_code status in server/client op_common PDUs */
#define ST_OK 0x00
#define ST_NA 0x01
/* Device requested for import is not available */
#define ST_DEV_BUSY 0x02
/* Device requested for import is in error state */
#define ST_DEV_ERR 0x03
#define ST_NODEV 0x04
#define ST_ERROR 0x05

extern int usbip_use_syslog;
extern int usbip_use_stderr;
extern int usbip_use_debug ;
Expand Down Expand Up @@ -130,6 +140,7 @@ int read_usb_interface(struct usbip_usb_device *udev, int i,

const char *usbip_speed_string(int num);
const char *usbip_status_string(int32_t status);
const char *usbip_op_common_status_string(int status);

int usbip_names_init(char *);
void usbip_names_free(void);
Expand Down
4 changes: 1 addition & 3 deletions tools/usb/usbip/src/usbip_network.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@ struct op_common {
#define OP_REPLY (0x00 << 8)
uint16_t code;

/* add more error code */
#define ST_OK 0x00
#define ST_NA 0x01
/* status codes defined in usbip_common.h */
uint32_t status; /* op_code status (for reply) */

} __attribute__((packed));
Expand Down

0 comments on commit f6bcbf2

Please sign in to comment.