Skip to content

Commit

Permalink
dpdk: support multiple same EAL arguments
Browse files Browse the repository at this point in the history
DPDK apps can specify multiple arguments of the same
type. YAML format only allows unique keys within a single
node. This commit adds support for multiple EAL arguments
of the same type to be used within suricata.yaml.

Ticket: OISF#5964
  • Loading branch information
zhiyuan-liao authored and victorjulien committed Jun 16, 2023
1 parent e759567 commit a748164
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
10 changes: 9 additions & 1 deletion doc/userguide/configuration/suricata-yaml.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1965,6 +1965,7 @@ The whole DPDK configuration resides in the `dpdk:` node. This node encapsulates
dpdk:
eal-params:
proc-type: primary
allow: ["0000:3b:00.0", "0000:3b:00.1"]
interfaces:
- interface: 0000:3b:00.0
threads: auto
Expand All @@ -1988,7 +1989,14 @@ are typically provided through the command line, are contained in the node
parameters. There are two ways to specify arguments: lengthy and short.
Dashes are omitted when describing the arguments. This setup node can be
used to set up the memory configuration, accessible NICs, and other EAL-related
parameters, among other things. The definition of lcore affinity as an EAL
parameters, among other things. The node `dpdk.eal-params` also supports
multiple arguments of the same type. This can be useful for EAL arguments
such as `--vdev`, `--allow`, or `--block`. Values for these EAL arguments
are specified as a comma-separated list.
An example of such usage can be found in the example above where the `allow`
argument only makes `0000:3b:00.0` and `0000:3b:00.1` accessible to Suricata.
arguments with list node. such as --vdev, --allow, --block eal options.
The definition of lcore affinity as an EAL
parameter is a standard practice. However, lcore parameters like `-l`, `-c`,
and `--lcores`` are specified within the `suricata-yaml-threading`_ section
to prevent configuration overlap.
Expand Down
8 changes: 8 additions & 0 deletions src/runmode-dpdk.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,14 @@ static void InitEal(void)
ArgumentsAdd(&args, AllocAndSetArgument("suricata"));

TAILQ_FOREACH (param, &eal_params->head, next) {
if (ConfNodeIsSequence(param)) {
const char *key = param->name;
ConfNode *val;
TAILQ_FOREACH (val, &param->head, next) {
ArgumentsAddOptionAndArgument(&args, key, (const char *)val->val);
}
continue;
}
ArgumentsAddOptionAndArgument(&args, param->name, param->val);
}

Expand Down

0 comments on commit a748164

Please sign in to comment.