@@ -225,10 +225,14 @@ static void netlink_disconnect(char *nbddev) {
225225 struct nl_msg * msg ;
226226 int driver_id ;
227227 int ret ;
228+ char * local_dev = nbddev ;
228229
229230 int index = -1 ;
230231 if (nbddev ) {
231- if (sscanf (nbddev , "nbd%d" , & index ) != 1 )
232+ if (!strncmp (local_dev , "/dev/" , 5 )) {
233+ local_dev += 5 ;
234+ }
235+ if (sscanf (local_dev , "nbd%d" , & index ) != 1 )
232236 err ("Invalid nbd device target\n" );
233237 }
234238 if (index < 0 )
@@ -313,13 +317,15 @@ static int netlink_check_conn(char* devname, int do_print) {
313317 struct nl_msg * msg ;
314318 int driver_id , ret ;
315319 int index = -1 ;
320+ char * local_dev = devname ;
316321 int connected = -1 ; /* -1 = unknown, 0 = connected, 1 = disconnected */
317322
318323 /* Parse device index from name */
319- if (sscanf (devname , "/dev/nbd%d" , & index ) != 1 ) {
320- if (sscanf (devname , "nbd%d" , & index ) != 1 ) {
321- return 2 ; /* Invalid device name */
322- }
324+ if (!strncmp (local_dev , "/dev/" , 5 )) {
325+ local_dev += 5 ;
326+ }
327+ if (sscanf (local_dev , "nbd%d" , & index ) != 1 ) {
328+ return 2 ; /* Invalid device name */
323329 }
324330
325331 /* Setup netlink socket */
@@ -1539,7 +1545,11 @@ int main(int argc, char *argv[]) {
15391545 if (netlink ) {
15401546 int index = -1 ;
15411547 if (cur_client -> dev ) {
1542- if (sscanf (cur_client -> dev , "nbd%d" , & index ) != 1 )
1548+ char * local_dev = cur_client -> dev ;
1549+ if (!strncmp (local_dev , "/dev/" , 5 )) {
1550+ local_dev += 5 ;
1551+ }
1552+ if (sscanf (local_dev , "nbd%d" , & index ) != 1 )
15431553 err ("Invalid nbd device target\n" );
15441554 }
15451555 netlink_configure (index , sockfds , flags , identifier );
0 commit comments