Hi Cristian, <snip>
> > Subject: [PATCH v1 1/6] librte_table: move structure to header file > > > > Move struct librte_table from the rte_table_acl.c to the > > rte_table_acl.h file. > > > > Signed-off-by: Bernard Iremonger <bernard.iremon...@intel.com> > > --- > > lib/librte_table/rte_table_acl.c | 24 ------------------------ > > lib/librte_table/rte_table_acl.h | 24 ++++++++++++++++++++++++ > > 2 files changed, 24 insertions(+), 24 deletions(-) > > > > diff --git a/lib/librte_table/rte_table_acl.c > > b/lib/librte_table/rte_table_acl.c > > index 3c05e4a..900f658 100644 > > --- a/lib/librte_table/rte_table_acl.c > > +++ b/lib/librte_table/rte_table_acl.c > > @@ -57,30 +57,6 @@ > > > > #endif > > > > -struct rte_table_acl { > > - struct rte_table_stats stats; > > - > > - /* Low-level ACL table */ > > - char name[2][RTE_ACL_NAMESIZE]; > > - struct rte_acl_param acl_params; /* for creating low level acl table */ > > - struct rte_acl_config cfg; /* Holds the field definitions (metadata) */ > > - struct rte_acl_ctx *ctx; > > - uint32_t name_id; > > - > > - /* Input parameters */ > > - uint32_t n_rules; > > - uint32_t entry_size; > > - > > - /* Internal tables */ > > - uint8_t *action_table; > > - struct rte_acl_rule **acl_rule_list; /* Array of pointers to rules */ > > - uint8_t *acl_rule_memory; /* Memory to store the rules */ > > - > > - /* Memory to store the action table and stack of free entries */ > > - uint8_t memory[0] __rte_cache_aligned; > > -}; > > - > > - > > static void * > > rte_table_acl_create( > > void *params, > > diff --git a/lib/librte_table/rte_table_acl.h > > b/lib/librte_table/rte_table_acl.h > > index a9cc032..1370b12 100644 > > --- a/lib/librte_table/rte_table_acl.h > > +++ b/lib/librte_table/rte_table_acl.h > > @@ -55,6 +55,30 @@ > > > > #include "rte_table.h" > > > > + > > +struct rte_table_acl { > > + struct rte_table_stats stats; > > + > > + /* Low-level ACL table */ > > + char name[2][RTE_ACL_NAMESIZE]; > > + struct rte_acl_param acl_params; /* for creating low level acl table */ > > + struct rte_acl_config cfg; /* Holds the field definitions (metadata) */ > > + struct rte_acl_ctx *ctx; > > + uint32_t name_id; > > + > > + /* Input parameters */ > > + uint32_t n_rules; > > + uint32_t entry_size; > > + > > + /* Internal tables */ > > + uint8_t *action_table; > > + struct rte_acl_rule **acl_rule_list; /* Array of pointers to rules */ > > + uint8_t *acl_rule_memory; /* Memory to store the rules */ > > + > > + /* Memory to store the action table and stack of free entries */ > > + uint8_t memory[0] __rte_cache_aligned; }; > > + > > /** ACL table parameters */ > > struct rte_table_acl_params { > > /** Name */ > > -- > > 1.9.1 > > > Hi Bernard, > > Strong objection here: > - This data structure contains the internal data needed to run the ACL table. > It > is implementation dependent, it is not part of the API. Therefore, it must not > be exposed as part of the API, so it has to stay in the .c file as opposed to > the > .h file. > - Users should handle the ACL table through the handle returned by the > create function as opposed to accessing this structure directly. > > Regards, > Cristian I will revisit this to see if there is another way. Regards, Bernard.