diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2023-11-30 13:02:14 +1100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2023-12-04 09:51:14 +0100 |
commit | df96a4cb5d4f3907f1019ba50511ee9787443acf (patch) | |
tree | c196c13637346995bf9f02ae32788e3397a7071b /flow.h | |
parent | eb8b1a233beee1e11eb700e2201becc34f913f9e (diff) | |
download | passt-df96a4cb5d4f3907f1019ba50511ee9787443acf.tar passt-df96a4cb5d4f3907f1019ba50511ee9787443acf.tar.gz passt-df96a4cb5d4f3907f1019ba50511ee9787443acf.tar.bz2 passt-df96a4cb5d4f3907f1019ba50511ee9787443acf.tar.lz passt-df96a4cb5d4f3907f1019ba50511ee9787443acf.tar.xz passt-df96a4cb5d4f3907f1019ba50511ee9787443acf.tar.zst passt-df96a4cb5d4f3907f1019ba50511ee9787443acf.zip |
flow: Introduce 'sidx' type to represent one side of one flow
In a number of places, we use indices into the flow table to identify a
specific flow. We also have cases where we need to identify a particular
side of a particular flow, and we expect those to become more common as
we generalise the flow table to cover more things.
To assist with that, introduces flow_sidx_t, an index type which identifies
a specific side of a specific flow in the table.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
[sbrivio: Suppress false cppcheck positive in flow_sidx()]
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'flow.h')
-rw-r--r-- | flow.h | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -39,6 +39,20 @@ struct flow_common { #define FLOW_TABLE_PRESSURE 30 /* % of FLOW_MAX */ #define FLOW_FILE_PRESSURE 30 /* % of c->nofile */ +/** + * struct flow_sidx - ID for one side of a specific flow + * @side: Side referenced (0 or 1) + * @flow: Index of flow referenced + */ +typedef struct flow_sidx { + int side :1; + unsigned flow :FLOW_INDEX_BITS; +} flow_sidx_t; +static_assert(sizeof(flow_sidx_t) <= sizeof(uint32_t), + "flow_sidx_t must fit within 32 bits"); + +#define FLOW_SIDX_NONE ((flow_sidx_t){ .flow = FLOW_MAX }) + union flow; void flow_table_compact(struct ctx *c, union flow *hole); |