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

Function rte_rib_remove

dpdk/lib/rib/rte_rib.c:207–237  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

205}
206
207void
208rte_rib_remove(struct rte_rib *rib, uint32_t ip, uint8_t depth)
209{
210 struct rte_rib_node *cur, *prev, *child;
211
212 cur = rte_rib_lookup_exact(rib, ip, depth);
213 if (cur == NULL)
214 return;
215
216 --rib->cur_routes;
217 cur->flag &= ~RTE_RIB_VALID_NODE;
218 while (!is_valid_node(cur)) {
219 if ((cur->left != NULL) && (cur->right != NULL))
220 return;
221 child = (cur->left == NULL) ? cur->right : cur->left;
222 if (child != NULL)
223 child->parent = cur->parent;
224 if (cur->parent == NULL) {
225 rib->tree = child;
226 node_free(rib, cur);
227 return;
228 }
229 if (cur->parent->left == cur)
230 cur->parent->left = child;
231 else
232 cur->parent->right = child;
233 prev = cur;
234 cur = cur->parent;
235 node_free(rib, prev);
236 }
237}
238
239struct rte_rib_node *
240rte_rib_insert(struct rte_rib *rib, uint32_t ip, uint8_t depth)

Callers 4

dir24_8_modifyFunction · 0.85
dummy_modifyFunction · 0.85
rte_rib_freeFunction · 0.85
test_basicFunction · 0.85

Calls 3

rte_rib_lookup_exactFunction · 0.85
is_valid_nodeFunction · 0.70
node_freeFunction · 0.70

Tested by 1

test_basicFunction · 0.68