kvargs: add generic string matching callback

This function can be used as a callback to
rte_kvargs_process.

This should reduce code duplication.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
This commit is contained in:
Gaetan Rivet 2018-07-11 23:45:02 +02:00 committed by Thomas Monjalon
parent ac1a511eff
commit a3b85476c5
3 changed files with 37 additions and 0 deletions

View File

@ -193,3 +193,13 @@ rte_kvargs_parse_delim(const char *args, const char * const valid_keys[],
free(copy);
return kvlist;
}
__rte_experimental
int
rte_kvargs_strcmp(const char *key __rte_unused,
const char *value, void *opaque)
{
const char *str = opaque;
return -abs(strcmp(str, value));
}

View File

@ -153,6 +153,32 @@ int rte_kvargs_process(const struct rte_kvargs *kvlist,
unsigned rte_kvargs_count(const struct rte_kvargs *kvlist,
const char *key_match);
/**
* Generic kvarg handler for string comparison.
*
* This function can be used for a generic string comparison processing
* on a list of kvargs.
*
* @param key
* kvarg pair key.
*
* @param value
* kvarg pair value.
*
* @param opaque
* Opaque pointer to a string.
*
* @return
* 0 if the strings match.
* !0 otherwise or on error.
*
* Unless strcmp, comparison ordering is not kept.
* In order for rte_kvargs_process to stop processing on match error,
* a negative value is returned even if strcmp had returned a positive one.
*/
__rte_experimental
int rte_kvargs_strcmp(const char *key, const char *value, void *opaque);
#ifdef __cplusplus
}
#endif

View File

@ -13,5 +13,6 @@ EXPERIMENTAL {
global:
rte_kvargs_parse_delim;
rte_kvargs_strcmp;
} DPDK_2.0;