]>
git.proxmox.com Git - mirror_iproute2.git/blob - rdma/rdma.c
1 // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
4 * Authors: Leon Romanovsky <leonro@mellanox.com>
11 static void help(char *name
)
13 pr_out("Usage: %s [ OPTIONS ] OBJECT { COMMAND | help }\n"
14 " %s [ -f[orce] ] -b[atch] filename\n"
15 "where OBJECT := { dev | link | resource | system | statistic | help }\n"
16 " OPTIONS := { -V[ersion] | -d[etails] | -j[son] | -p[retty] -r[aw]}\n", name
, name
);
19 static int cmd_help(struct rd
*rd
)
25 static int rd_cmd(struct rd
*rd
, int argc
, char **argv
)
27 const struct rd_cmd cmds
[] = {
32 { "resource", cmd_res
},
33 { "system", cmd_sys
},
34 { "statistic", cmd_stat
},
41 return rd_exec_cmd(rd
, cmds
, "object");
44 static int rd_batch_cmd(int argc
, char *argv
[], void *data
)
48 return rd_cmd(rd
, argc
, argv
);
51 static int rd_batch(struct rd
*rd
, const char *name
, bool force
)
53 return do_batch(name
, force
, rd_batch_cmd
, rd
);
56 static int rd_init(struct rd
*rd
, char *filename
)
61 rd
->filename
= filename
;
62 INIT_LIST_HEAD(&rd
->dev_map_list
);
63 INIT_LIST_HEAD(&rd
->filter_list
);
65 rd
->buff
= malloc(MNL_SOCKET_BUFFER_SIZE
);
69 rd_prepare_msg(rd
, RDMA_NLDEV_CMD_GET
,
70 &seq
, (NLM_F_REQUEST
| NLM_F_ACK
| NLM_F_DUMP
));
71 ret
= rd_send_msg(rd
);
75 return rd_recv_msg(rd
, rd_dev_init_cb
, rd
, seq
);
78 static void rd_cleanup(struct rd
*rd
)
83 int main(int argc
, char **argv
)
85 static const struct option long_options
[] = {
86 { "version", no_argument
, NULL
, 'V' },
87 { "help", no_argument
, NULL
, 'h' },
88 { "json", no_argument
, NULL
, 'j' },
89 { "pretty", no_argument
, NULL
, 'p' },
90 { "details", no_argument
, NULL
, 'd' },
91 { "raw", no_argument
, NULL
, 'r' },
92 { "force", no_argument
, NULL
, 'f' },
93 { "batch", required_argument
, NULL
, 'b' },
96 bool show_driver_details
= false;
97 const char *batch_file
= NULL
;
98 bool show_details
= false;
99 bool json_output
= false;
100 bool show_raw
= false;
106 filename
= basename(argv
[0]);
108 while ((opt
= getopt_long(argc
, argv
, ":Vhdrpjfb:",
109 long_options
, NULL
)) >= 0) {
112 printf("%s utility, iproute2-%s\n",
120 show_driver_details
= true;
140 pr_err("-%c option requires an argument\n", optopt
);
143 pr_err("Unknown option.\n");
152 rd
.show_details
= show_details
;
153 rd
.show_driver_details
= show_driver_details
;
154 rd
.json_output
= json_output
;
155 rd
.pretty_output
= pretty
;
156 rd
.show_raw
= show_raw
;
158 err
= rd_init(&rd
, filename
);
163 err
= rd_batch(&rd
, batch_file
, force
);
165 err
= rd_cmd(&rd
, argc
, argv
);
169 return err
? EXIT_FAILURE
: EXIT_SUCCESS
;