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

Function rte_rib6_remove

dpdk/lib/rib/rte_rib6.c:251–282  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

249}
250
251void
252rte_rib6_remove(struct rte_rib6 *rib,
253 const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth)
254{
255 struct rte_rib6_node *cur, *prev, *child;
256
257 cur = rte_rib6_lookup_exact(rib, ip, depth);
258 if (cur == NULL)
259 return;
260
261 --rib->cur_routes;
262 cur->flag &= ~RTE_RIB_VALID_NODE;
263 while (!is_valid_node(cur)) {
264 if ((cur->left != NULL) && (cur->right != NULL))
265 return;
266 child = (cur->left == NULL) ? cur->right : cur->left;
267 if (child != NULL)
268 child->parent = cur->parent;
269 if (cur->parent == NULL) {
270 rib->tree = child;
271 node_free(rib, cur);
272 return;
273 }
274 if (cur->parent->left == cur)
275 cur->parent->left = child;
276 else
277 cur->parent->right = child;
278 prev = cur;
279 cur = cur->parent;
280 node_free(rib, prev);
281 }
282}
283
284struct rte_rib6_node *
285rte_rib6_insert(struct rte_rib6 *rib,

Callers 4

dummy_modifyFunction · 0.85
trie_modifyFunction · 0.85
rte_rib6_freeFunction · 0.85
test_basicFunction · 0.85

Calls 3

rte_rib6_lookup_exactFunction · 0.85
is_valid_nodeFunction · 0.70
node_freeFunction · 0.70

Tested by 1

test_basicFunction · 0.68