Query an existing flow rule. */
| 504 | |
| 505 | /* Query an existing flow rule. */ |
| 506 | int |
| 507 | rte_flow_query(uint16_t port_id, |
| 508 | struct rte_flow *flow, |
| 509 | const struct rte_flow_action *action, |
| 510 | void *data, |
| 511 | struct rte_flow_error *error) |
| 512 | { |
| 513 | struct rte_eth_dev *dev = &rte_eth_devices[port_id]; |
| 514 | const struct rte_flow_ops *ops = rte_flow_ops_get(port_id, error); |
| 515 | int ret; |
| 516 | |
| 517 | if (!ops) |
| 518 | return -rte_errno; |
| 519 | if (likely(!!ops->query)) { |
| 520 | fts_enter(dev); |
| 521 | ret = ops->query(dev, flow, action, data, error); |
| 522 | fts_exit(dev); |
| 523 | ret = flow_err(port_id, ret, error); |
| 524 | |
| 525 | rte_flow_trace_query(port_id, flow, action, data, ret); |
| 526 | |
| 527 | return ret; |
| 528 | } |
| 529 | return rte_flow_error_set(error, ENOSYS, |
| 530 | RTE_FLOW_ERROR_TYPE_UNSPECIFIED, |
| 531 | NULL, rte_strerror(ENOSYS)); |
| 532 | } |
| 533 | |
| 534 | /* Restrict ingress traffic to the defined flow rules. */ |
| 535 | int |
no test coverage detected