]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
rdma: Make get_port_from_argv() returns valid port in strict port mode
authorMark Zhang <markz@mellanox.com>
Wed, 17 Jul 2019 14:31:53 +0000 (17:31 +0300)
committerStephen Hemminger <stephen@networkplumber.org>
Fri, 19 Jul 2019 17:51:13 +0000 (10:51 -0700)
When strict_port is set, make get_port_from_argv() returns failure if
no valid port is specified.

Signed-off-by: Mark Zhang <markz@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
rdma/utils.c

index aed1a3d011570e1af9dca7b77952dde6eda88a81..95b669f39e307d0c0fb8e731ddb0e5eb92262cce 100644 (file)
@@ -56,7 +56,7 @@ bool rd_no_arg(struct rd *rd)
  * mlx5_1/1    | 1          | false
  * mlx5_1/-    | 0          | false
  *
- * In strict mode, /- will return error.
+ * In strict port mode, a non-0 port must be provided
  */
 static int get_port_from_argv(struct rd *rd, uint32_t *port,
                              bool *is_dump_all, bool strict_port)
@@ -64,7 +64,7 @@ static int get_port_from_argv(struct rd *rd, uint32_t *port,
        char *slash;
 
        *port = 0;
-       *is_dump_all = true;
+       *is_dump_all = strict_port ? false : true;
 
        slash = strchr(rd_argv(rd), '/');
        /* if no port found, return 0 */
@@ -83,6 +83,9 @@ static int get_port_from_argv(struct rd *rd, uint32_t *port,
                if (!*port && strlen(slash))
                        return -EINVAL;
        }
+       if (strict_port && (*port == 0))
+               return -EINVAL;
+
        return 0;
 }