| 1553 | "pipeline <pipeline_name> selector <selector_name> group member delete <file_name>"; |
| 1554 | |
| 1555 | static void |
| 1556 | cmd_pipeline_selector_group_member_delete(char **tokens, |
| 1557 | uint32_t n_tokens, |
| 1558 | char *out, |
| 1559 | size_t out_size, |
| 1560 | void *obj __rte_unused) |
| 1561 | { |
| 1562 | struct rte_swx_ctl_pipeline *ctl; |
| 1563 | char *pipeline_name, *selector_name, *file_name; |
| 1564 | FILE *file = NULL; |
| 1565 | uint32_t file_line_number = 0; |
| 1566 | int status; |
| 1567 | |
| 1568 | if (n_tokens != 8) { |
| 1569 | snprintf(out, out_size, MSG_ARG_MISMATCH, tokens[0]); |
| 1570 | return; |
| 1571 | } |
| 1572 | |
| 1573 | pipeline_name = tokens[1]; |
| 1574 | ctl = rte_swx_ctl_pipeline_find(pipeline_name); |
| 1575 | if (!ctl) { |
| 1576 | snprintf(out, out_size, MSG_ARG_INVALID, "pipeline_name"); |
| 1577 | return; |
| 1578 | } |
| 1579 | |
| 1580 | if (strcmp(tokens[2], "selector") != 0) { |
| 1581 | snprintf(out, out_size, MSG_ARG_NOT_FOUND, "selector"); |
| 1582 | return; |
| 1583 | } |
| 1584 | |
| 1585 | selector_name = tokens[3]; |
| 1586 | |
| 1587 | if (strcmp(tokens[4], "group") || |
| 1588 | strcmp(tokens[5], "member") || |
| 1589 | strcmp(tokens[6], "delete")) { |
| 1590 | snprintf(out, out_size, MSG_ARG_NOT_FOUND, "group member delete"); |
| 1591 | return; |
| 1592 | } |
| 1593 | |
| 1594 | file_name = tokens[7]; |
| 1595 | file = fopen(file_name, "r"); |
| 1596 | if (!file) { |
| 1597 | snprintf(out, out_size, "Cannot open file %s.\n", file_name); |
| 1598 | return; |
| 1599 | } |
| 1600 | |
| 1601 | status = pipeline_selector_group_members_delete(ctl, |
| 1602 | selector_name, |
| 1603 | file, |
| 1604 | &file_line_number); |
| 1605 | if (status) |
| 1606 | snprintf(out, out_size, "Invalid entry in file %s at line %u\n", |
| 1607 | file_name, |
| 1608 | file_line_number); |
| 1609 | |
| 1610 | fclose(file); |
| 1611 | } |
| 1612 |
no test coverage detected