DPDK  19.08.0-rc0
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)

Type of callback function used by rte_kvargs_process()

Definition at line 40 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.

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.