| 265 | } |
| 266 | |
| 267 | rte_edge_t |
| 268 | rte_node_edge_shrink(rte_node_t id, rte_edge_t size) |
| 269 | { |
| 270 | rte_edge_t rc = RTE_EDGE_ID_INVALID; |
| 271 | struct node *node; |
| 272 | |
| 273 | NODE_ID_CHECK(id); |
| 274 | graph_spinlock_lock(); |
| 275 | |
| 276 | STAILQ_FOREACH(node, &node_list, next) { |
| 277 | if (node->id == id) { |
| 278 | if (node->nb_edges < size) { |
| 279 | rte_errno = E2BIG; |
| 280 | } else { |
| 281 | node->nb_edges = size; |
| 282 | rc = size; |
| 283 | } |
| 284 | break; |
| 285 | } |
| 286 | } |
| 287 | |
| 288 | graph_spinlock_unlock(); |
| 289 | fail: |
| 290 | return rc; |
| 291 | } |
| 292 | |
| 293 | rte_edge_t |
| 294 | rte_node_edge_update(rte_node_t id, rte_edge_t from, const char **next_nodes, |