]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
rdma: Add the prefix for driver attributes
authorLeon Romanovsky <leonro@mellanox.com>
Wed, 27 Feb 2019 06:41:51 +0000 (08:41 +0200)
committerDavid Ahern <dsahern@gmail.com>
Wed, 27 Feb 2019 16:25:47 +0000 (08:25 -0800)
There is a need to distinguish between driver vs. general exposed
attributes. The most common use case is to expose some internal
garbage under extremely common and sexy name, e.g. pi, ci e.t.c

In order to achieve that, we will add "drv_" prefix to all strings
which were received through RDMA_NLDEV_ATTR_DRIVER_* attributes.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>a
Tested-by: Lijun Ou <oulijun@huawei.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
rdma/utils.c

index 6bc14cd5c961b5cb7b0c965246389408f0cd3df8..1f6bf330bdbb553947c94752ea88ac49f30cb0ee 100644 (file)
@@ -829,27 +829,37 @@ static int print_driver_entry(struct rd *rd, struct nlattr *key_attr,
                                struct nlattr *val_attr,
                                enum rdma_nldev_print_type print_type)
 {
-       const char *key_str = mnl_attr_get_str(key_attr);
        int attr_type = nla_type(val_attr);
+       int ret = -EINVAL;
+       char *key_str;
+
+       if (asprintf(&key_str, "drv_%s", mnl_attr_get_str(key_attr)) == -1)
+               return -ENOMEM;
 
        switch (attr_type) {
        case RDMA_NLDEV_ATTR_DRIVER_STRING:
-               return print_driver_string(rd, key_str,
-                               mnl_attr_get_str(val_attr));
+               ret = print_driver_string(rd, key_str,
+                                         mnl_attr_get_str(val_attr));
+               break;
        case RDMA_NLDEV_ATTR_DRIVER_S32:
-               return print_driver_s32(rd, key_str,
-                               mnl_attr_get_u32(val_attr), print_type);
+               ret = print_driver_s32(rd, key_str, mnl_attr_get_u32(val_attr),
+                                      print_type);
+               break;
        case RDMA_NLDEV_ATTR_DRIVER_U32:
-               return print_driver_u32(rd, key_str,
-                               mnl_attr_get_u32(val_attr), print_type);
+               ret = print_driver_u32(rd, key_str, mnl_attr_get_u32(val_attr),
+                                      print_type);
+               break;
        case RDMA_NLDEV_ATTR_DRIVER_S64:
-               return print_driver_s64(rd, key_str,
-                               mnl_attr_get_u64(val_attr), print_type);
+               ret = print_driver_s64(rd, key_str, mnl_attr_get_u64(val_attr),
+                                      print_type);
+               break;
        case RDMA_NLDEV_ATTR_DRIVER_U64:
-               return print_driver_u64(rd, key_str,
-                               mnl_attr_get_u64(val_attr), print_type);
+               ret = print_driver_u64(rd, key_str, mnl_attr_get_u64(val_attr),
+                                      print_type);
+               break;
        }
-       return -EINVAL;
+       free(key_str);
+       return ret;
 }
 
 void print_driver_table(struct rd *rd, struct nlattr *tb)