DPDK  20.11.10
Data Structures | Macros | Typedefs | Functions
rte_kvargs.h File Reference
#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_kvargsrte_kvargs_parse (const char *args, const char *const valid_keys[])
 
__rte_experimental struct rte_kvargsrte_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)
 

Detailed Description

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.

Macro Definition Documentation

◆ RTE_KVARGS_MAX

#define RTE_KVARGS_MAX   32

Maximum number of key/value associations

Definition at line 31 of file rte_kvargs.h.

◆ RTE_KVARGS_PAIRS_DELIM

#define RTE_KVARGS_PAIRS_DELIM   ","

separator character used between each pair

Definition at line 34 of file rte_kvargs.h.

◆ RTE_KVARGS_KV_DELIM

#define RTE_KVARGS_KV_DELIM   "="

separator character used between key and value

Definition at line 37 of file rte_kvargs.h.

Typedef Documentation

◆ arg_handler_t

typedef int(* arg_handler_t) (const char *key, const char *value, void *opaque)

Callback prototype used by rte_kvargs_process().

Parameters
keyThe key to consider, it will not be NULL.
valueThe value corresponding to the key, it may be NULL (e.g. only with key)
opaqueAn opaque pointer coming from the caller.
Returns
  • >=0 handle key success.
  • <0 on error.

Definition at line 52 of file rte_kvargs.h.

Function Documentation

◆ rte_kvargs_parse()

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().

Parameters
argsThe input string containing the key/value associations
valid_keysA list of valid keys (table of const char *, the last must be NULL). This argument is ignored if NULL
Returns
  • A pointer to an allocated rte_kvargs structure on success
  • NULL on error

◆ rte_kvargs_parse_delim()

__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().

Parameters
argsThe input string containing the key/value associations
valid_keysA list of valid keys (table of const char *, the last must be NULL). This argument is ignored if NULL
valid_endsAcceptable terminating characters. If NULL, the behavior is the same as rte_kvargs_parse.
Returns
  • A pointer to an allocated rte_kvargs structure on success
  • NULL on error

◆ rte_kvargs_free()

void rte_kvargs_free ( struct rte_kvargs kvlist)

Free a rte_kvargs structure

Free a rte_kvargs structure previously allocated with rte_kvargs_parse().

Parameters
kvlistThe rte_kvargs structure. No error if NULL.

◆ rte_kvargs_process()

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.

Parameters
kvlistThe rte_kvargs structure. No error if NULL.
key_matchThe key on which the handler should be called, or NULL to process handler on all associations
handlerThe function to call for each matching key
opaque_argA pointer passed unchanged to the handler
Returns
  • 0 on success
  • Negative on error

◆ rte_kvargs_count()

unsigned rte_kvargs_count ( const struct rte_kvargs kvlist,
const char *  key_match 
)

Count the number of associations matching the given key

Parameters
kvlistThe rte_kvargs structure
key_matchThe key that should match, or NULL to count all associations
Returns
The number of entries

◆ rte_kvargs_strcmp()

__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.

Parameters
keykvarg pair key.
valuekvarg pair value.
opaqueOpaque pointer to a string.
Returns
0 if the strings match. !0 otherwise or on error.

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.