rdma: Add an option to rename IB device interface

Enrich rdmatool with an option to rename IB devices,
the command interface follows Iproute2 convention:
"rdma dev set [OLD-DEVNAME] name NEW-DEVNAME"

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
Leon Romanovsky 2018-10-31 09:17:57 +02:00 committed by David Ahern
parent a14ceed325
commit 4443c9c6a0
1 changed files with 35 additions and 0 deletions

View File

@ -14,6 +14,7 @@
static int dev_help(struct rd *rd) static int dev_help(struct rd *rd)
{ {
pr_out("Usage: %s dev show [DEV]\n", rd->filename); pr_out("Usage: %s dev show [DEV]\n", rd->filename);
pr_out(" %s dev set [DEV] name DEVNAME\n", rd->filename);
return 0; return 0;
} }
@ -240,17 +241,51 @@ static int dev_one_show(struct rd *rd)
return rd_exec_cmd(rd, cmds, "parameter"); return rd_exec_cmd(rd, cmds, "parameter");
} }
static int dev_set_name(struct rd *rd)
{
uint32_t seq;
if (rd_no_arg(rd)) {
pr_err("Please provide device new name.\n");
return -EINVAL;
}
rd_prepare_msg(rd, RDMA_NLDEV_CMD_SET,
&seq, (NLM_F_REQUEST | NLM_F_ACK));
mnl_attr_put_u32(rd->nlh, RDMA_NLDEV_ATTR_DEV_INDEX, rd->dev_idx);
mnl_attr_put_strz(rd->nlh, RDMA_NLDEV_ATTR_DEV_NAME, rd_argv(rd));
return rd_send_msg(rd);
}
static int dev_one_set(struct rd *rd)
{
const struct rd_cmd cmds[] = {
{ NULL, dev_help},
{ "name", dev_set_name},
{ 0 }
};
return rd_exec_cmd(rd, cmds, "parameter");
}
static int dev_show(struct rd *rd) static int dev_show(struct rd *rd)
{ {
return rd_exec_dev(rd, dev_one_show); return rd_exec_dev(rd, dev_one_show);
} }
static int dev_set(struct rd *rd)
{
return rd_exec_require_dev(rd, dev_one_set);
}
int cmd_dev(struct rd *rd) int cmd_dev(struct rd *rd)
{ {
const struct rd_cmd cmds[] = { const struct rd_cmd cmds[] = {
{ NULL, dev_show }, { NULL, dev_show },
{ "show", dev_show }, { "show", dev_show },
{ "list", dev_show }, { "list", dev_show },
{ "set", dev_set },
{ "help", dev_help }, { "help", dev_help },
{ 0 } { 0 }
}; };