MCPcopy Create free account
hub / github.com/F-Stack/f-stack / parse_pdump

Function parse_pdump

dpdk/app/pdump/main.c:249–381  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

247}
248
249static int
250parse_pdump(const char *optarg)
251{
252 struct rte_kvargs *kvlist;
253 int ret = 0, cnt1, cnt2;
254 struct pdump_tuples *pt;
255 struct parse_val v = {0};
256
257 pt = &pdump_t[num_tuples];
258
259 /* initial check for invalid arguments */
260 kvlist = rte_kvargs_parse(optarg, valid_pdump_arguments);
261 if (kvlist == NULL) {
262 printf("--pdump=\"%s\": invalid argument passed\n", optarg);
263 return -1;
264 }
265
266 /* port/device_id parsing and validation */
267 cnt1 = rte_kvargs_count(kvlist, PDUMP_PORT_ARG);
268 cnt2 = rte_kvargs_count(kvlist, PDUMP_PCI_ARG);
269 if (!((cnt1 == 1 && cnt2 == 0) || (cnt1 == 0 && cnt2 == 1))) {
270 printf("--pdump=\"%s\": must have either port or "
271 "device_id argument\n", optarg);
272 ret = -1;
273 goto free_kvlist;
274 } else if (cnt1 == 1) {
275 v.min = 0;
276 v.max = RTE_MAX_ETHPORTS-1;
277 ret = rte_kvargs_process(kvlist, PDUMP_PORT_ARG,
278 &parse_uint_value, &v);
279 if (ret < 0)
280 goto free_kvlist;
281 pt->port = (uint16_t) v.val;
282 pt->dump_by_type = PORT_ID;
283 } else if (cnt2 == 1) {
284 ret = rte_kvargs_process(kvlist, PDUMP_PCI_ARG,
285 &parse_device_id, pt);
286 if (ret < 0)
287 goto free_kvlist;
288 }
289
290 /* queue parsing and validation */
291 cnt1 = rte_kvargs_count(kvlist, PDUMP_QUEUE_ARG);
292 if (cnt1 != 1) {
293 printf("--pdump=\"%s\": must have queue argument\n", optarg);
294 ret = -1;
295 goto free_kvlist;
296 }
297 ret = rte_kvargs_process(kvlist, PDUMP_QUEUE_ARG, &parse_queue, pt);
298 if (ret < 0)
299 goto free_kvlist;
300
301 /* rx-dev and tx-dev parsing and validation */
302 cnt1 = rte_kvargs_count(kvlist, PDUMP_RX_DEV_ARG);
303 cnt2 = rte_kvargs_count(kvlist, PDUMP_TX_DEV_ARG);
304 if (cnt1 == 0 && cnt2 == 0) {
305 printf("--pdump=\"%s\": must have either rx-dev or "
306 "tx-dev argument\n", optarg);

Callers 1

launch_args_parseFunction · 0.85

Calls 6

rte_kvargs_parseFunction · 0.85
rte_kvargs_countFunction · 0.85
rte_kvargs_processFunction · 0.85
strcmpFunction · 0.85
rte_kvargs_freeFunction · 0.85
printfFunction · 0.50

Tested by

no test coverage detected