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:
parent
a14ceed325
commit
4443c9c6a0
35
rdma/dev.c
35
rdma/dev.c
|
|
@ -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 }
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue