From 8f8eb734828dfe8e07903adbe2a772e2afa46872 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 5 Jul 2024 20:44:00 +1000 Subject: flow: Add flow_sidx_valid() helper To implement the TCP hash table, we need an invalid (NULL-like) value for flow_sidx_t. We use FLOW_SIDX_NONE for that, but for defensiveness, we treat (usually) anything with an out of bounds flow index the same way. That's not always done consistently though. In flow_at_sidx() we open code a check on the flow index. In tcp_hash_probe() we instead compare against FLOW_SIDX_NONE, and in some other places we use the fact that flow_at_sidx() will return NULL in this case, even if we don't otherwise need the flow it returns. Clean this up a bit, by adding an explicit flow_sidx_valid() test function. Signed-off-by: David Gibson Signed-off-by: Stefano Brivio --- flow.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'flow.h') diff --git a/flow.h b/flow.h index 29ef9f1..d1f49c6 100644 --- a/flow.h +++ b/flow.h @@ -176,6 +176,17 @@ static_assert(sizeof(flow_sidx_t) <= sizeof(uint32_t), #define FLOW_SIDX_NONE ((flow_sidx_t){ .flow = FLOW_MAX }) +/** + * flow_sidx_valid() - Test if a sidx is valid + * @sidx: sidx value + * + * Return: true if @sidx refers to a valid flow & side + */ +static inline bool flow_sidx_valid(flow_sidx_t sidx) +{ + return sidx.flow < FLOW_MAX; +} + /** * flow_sidx_eq() - Test if two sidx values are equal * @a, @b: sidx values -- cgit v1.2.3