DPDK
20.08.0
|
#include <rte_compat.h>
Go to the source code of this file.
Data Structures | |
struct | rte_kvargs_pair |
struct | rte_kvargs |
Macros | |
#define | RTE_KVARGS_MAX 32 |
#define | RTE_KVARGS_PAIRS_DELIM "," |
#define | RTE_KVARGS_KV_DELIM "=" |
Typedefs | |
typedef int(* | arg_handler_t) (const char *key, const char *value, void *opaque) |
Functions | |
struct rte_kvargs * | rte_kvargs_parse (const char *args, const char *const valid_keys[]) |
__rte_experimental struct rte_kvargs * | rte_kvargs_parse_delim (const char *args, const char *const valid_keys[], const char *valid_ends) |
void | rte_kvargs_free (struct rte_kvargs *kvlist) |
int | rte_kvargs_process (const struct rte_kvargs *kvlist, const char *key_match, arg_handler_t handler, void *opaque_arg) |
unsigned | rte_kvargs_count (const struct rte_kvargs *kvlist, const char *key_match) |
__rte_experimental int | rte_kvargs_strcmp (const char *key, const char *value, void *opaque) |
RTE Argument parsing
This module can be used to parse arguments whose format is key1=value1,key2=value2,key3=value3,...
The same key can appear several times with the same or a different value. Indeed, the arguments are stored as a list of key/values associations and not as a dictionary.
This file provides some helpers that are especially used by virtual ethernet devices at initialization for arguments parsing.
Definition in file rte_kvargs.h.
#define RTE_KVARGS_MAX 32 |
Maximum number of key/value associations
Definition at line 31 of file rte_kvargs.h.
#define RTE_KVARGS_PAIRS_DELIM "," |
separator character used between each pair
Definition at line 34 of file rte_kvargs.h.
#define RTE_KVARGS_KV_DELIM "=" |
separator character used between key and value
Definition at line 37 of file rte_kvargs.h.
typedef int(* arg_handler_t) (const char *key, const char *value, void *opaque) |
Type of callback function used by rte_kvargs_process()
Definition at line 40 of file rte_kvargs.h.
struct rte_kvargs* rte_kvargs_parse | ( | const char * | args, |
const char *const | valid_keys[] | ||
) |
Allocate a rte_kvargs and store key/value associations from a string
The function allocates and fills a rte_kvargs structure from a given string whose format is key1=value1,key2=value2,...
The structure can be freed with rte_kvargs_free().
args | The input string containing the key/value associations |
valid_keys | A list of valid keys (table of const char *, the last must be NULL). This argument is ignored if NULL |
__rte_experimental struct rte_kvargs* rte_kvargs_parse_delim | ( | const char * | args, |
const char *const | valid_keys[], | ||
const char * | valid_ends | ||
) |
Allocate a rte_kvargs and store key/value associations from a string. This version will consider any byte from valid_ends as a possible terminating character, and will not parse beyond any of their occurrence.
The function allocates and fills an rte_kvargs structure from a given string whose format is key1=value1,key2=value2,...
The structure can be freed with rte_kvargs_free().
args | The input string containing the key/value associations |
valid_keys | A list of valid keys (table of const char *, the last must be NULL). This argument is ignored if NULL |
valid_ends | Acceptable terminating characters. If NULL, the behavior is the same as rte_kvargs_parse . |
void rte_kvargs_free | ( | struct rte_kvargs * | kvlist | ) |
Free a rte_kvargs structure
Free a rte_kvargs structure previously allocated with rte_kvargs_parse().
kvlist | The rte_kvargs structure. No error if NULL. |
int rte_kvargs_process | ( | const struct rte_kvargs * | kvlist, |
const char * | key_match, | ||
arg_handler_t | handler, | ||
void * | opaque_arg | ||
) |
Call a handler function for each key/value matching the key
For each key/value association that matches the given key, calls the handler function with the for a given arg_name passing the value on the dictionary for that key and a given extra argument.
kvlist | The rte_kvargs structure. No error if NULL. |
key_match | The key on which the handler should be called, or NULL to process handler on all associations |
handler | The function to call for each matching key |
opaque_arg | A pointer passed unchanged to the handler |
unsigned rte_kvargs_count | ( | const struct rte_kvargs * | kvlist, |
const char * | key_match | ||
) |
Count the number of associations matching the given key
kvlist | The rte_kvargs structure |
key_match | The key that should match, or NULL to count all associations |
__rte_experimental int rte_kvargs_strcmp | ( | const char * | key, |
const char * | value, | ||
void * | opaque | ||
) |
Generic kvarg handler for string comparison.
This function can be used for a generic string comparison processing on a list of kvargs.
key | kvarg pair key. |
value | kvarg pair value. |
opaque | Opaque pointer to a string. |
Unlike 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.