* Delete a rule from the rule table. * NOTE: Valid range for depth parameter is 1 .. 32 inclusive. */
| 439 | * NOTE: Valid range for depth parameter is 1 .. 32 inclusive. |
| 440 | */ |
| 441 | static void |
| 442 | rule_delete(struct __rte_lpm *i_lpm, int32_t rule_index, uint8_t depth) |
| 443 | { |
| 444 | int i; |
| 445 | |
| 446 | VERIFY_DEPTH(depth); |
| 447 | |
| 448 | i_lpm->rules_tbl[rule_index] = |
| 449 | i_lpm->rules_tbl[i_lpm->rule_info[depth - 1].first_rule |
| 450 | + i_lpm->rule_info[depth - 1].used_rules - 1]; |
| 451 | |
| 452 | for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) { |
| 453 | if (i_lpm->rule_info[i].used_rules > 0) { |
| 454 | i_lpm->rules_tbl[i_lpm->rule_info[i].first_rule - 1] = |
| 455 | i_lpm->rules_tbl[i_lpm->rule_info[i].first_rule |
| 456 | + i_lpm->rule_info[i].used_rules - 1]; |
| 457 | i_lpm->rule_info[i].first_rule--; |
| 458 | } |
| 459 | } |
| 460 | |
| 461 | i_lpm->rule_info[depth - 1].used_rules--; |
| 462 | } |
| 463 | |
| 464 | /* |
| 465 | * Finds a rule in rule table. |
no outgoing calls
no test coverage detected