summaryrefslogtreecommitdiff
path: root/service/src/node_lb.c
diff options
context:
space:
mode:
Diffstat (limited to 'service/src/node_lb.c')
-rw-r--r--service/src/node_lb.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/service/src/node_lb.c b/service/src/node_lb.c
index cb4b0cb..3d25dc9 100644
--- a/service/src/node_lb.c
+++ b/service/src/node_lb.c
@@ -472,8 +472,8 @@ static __rte_always_inline void gen_store_trace_info(struct rte_node * node, str
}
/* Populate the lb information */
- len +=
- snprintf(str_record + len, sizeof(str_record) - len, ", cur sid:%u, lb id:%u", lb_group->sid, lb_group->index);
+ len += snprintf(str_record + len, sizeof(str_record) - len, ", cur sid:%u, lb id:%u", lb_group->sid,
+ lb_group->index);
/* Emit the trace record */
struct dp_trace_record_meta meta = {
@@ -518,6 +518,17 @@ static __rte_always_inline uint16_t lb_node_process(struct rte_graph * graph, st
assert(lb_group_index < MR_LB_MAX_GROUP);
assert(lb_group_index < lb_main->nr_group);
+ if (unlikely(lb_group_index >= lb_main->nr_group))
+ {
+ MR_ERROR("The lb group index is invalid: %u, cur_sid: %u, sid_start: %u, nr_group: %u.", lb_group_index,
+ mrb_meta->cur_sid, sid_start, lb_main->nr_group);
+
+ mrb_metadata_pktmbuf_dump(mbuf);
+
+ next_node_index = LB_NEXT_PKT_DROP;
+ goto node_enqueue;
+ }
+
lb_group = &lb_main->lb_groups[lb_group_index];
last_sid = mrb_meta->cur_sid;
}
@@ -543,6 +554,7 @@ static __rte_always_inline uint16_t lb_node_process(struct rte_graph * graph, st
gen_store_trace_info(node, mbuf, next_node_index, lb_group);
}
+ node_enqueue:
/* Batch processing */
if (unlikely(batch_next_node_index != next_node_index))
{