> ## Documentation Index
> Fetch the complete documentation index at: https://wireblast.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# All the flags

> Every command-line flag, its default, and what it does.

Everything the wizard can set, it can set. `wireblast --help` prints the same list.

## Interface and pattern

| Flag                | Default | Description                                                                         |
| ------------------- | ------- | ----------------------------------------------------------------------------------- |
| `-i`, `--interface` |         | Network interface to transmit from. The **physical NIC**, not a VLAN sub-interface. |
| `-m`, `--mode`      | `udp`   | Traffic pattern: `udp`, `tcp-syn`, `imix`, `raw`, `pcap`, `receive`.                |
| `--queues`          | `0`     | Number of NIC queues to use. `0` means all of them.                                 |

## Addressing

| Flag        | Default              | Description                                                                                         |
| ----------- | -------------------- | --------------------------------------------------------------------------------------------------- |
| `--src-ip`  | an interface address | Source IPv4 or IPv6 address.                                                                        |
| `--dst-ip`  |                      | Destination IPv4 or IPv6 address or CIDR. A CIDR cycles destinations across flows.                  |
| `--src-mac` | the interface's MAC  | Source MAC address.                                                                                 |
| `--dst-mac` | resolved             | Next-hop MAC. Resolved from the neighbour and routing tables if omitted. Required for `--mode raw`. |
| `--vlan`    | `0`                  | 802.1Q VLAN ID, 1 to 4094. `0` is untagged.                                                         |

## Flows

| Flag              | Default      | Description                                          |
| ----------------- | ------------ | ---------------------------------------------------- |
| `--flows`         | `1`          | Number of distinct flows.                            |
| `--flow-order`    | `sequential` | Order flows are walked in: `sequential` or `random`. |
| `--src-port`      | `1024`       | First source port; increments per flow.              |
| `--dst-port`      | `9000`       | Destination port. Fixed unless `--vary-dst-port`.    |
| `--vary-dst-port` | `false`      | Also increment the destination port per flow.        |

## Packet contents

| Flag                  | Default  | Description                                                                                                                      |
| --------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `-s`, `--packet-size` | `64`     | Total Ethernet frame size in bytes, **including the 4-byte FCS**. Minimum 68 when `--vlan` is set. Ignored by `imix` and `pcap`. |
| `--ethertype`         | `0x88b5` | EtherType for `--mode raw`. Must be `0x0600` or above.                                                                           |
| `--payload-byte`      | `90`     | Repeating payload byte value for `--mode raw`.                                                                                   |

## Rate and duration

| Flag               | Default   | Description                                                              |
| ------------------ | --------- | ------------------------------------------------------------------------ |
| `--pps`            | `100000`  | Packet rate limit, aggregate across queues. `1M`, `500k`, `unlimited`.   |
| `--bps`            | unlimited | Bit rate limit in **L1** bits, aggregate. `10G`, `2.5Gbps`, `unlimited`. |
| `-d`, `--duration` | `30s`     | How long to transmit. `0` runs until stopped.                            |

Both limits can be set together, and the slower one binds. Setting `--bps` without `--pps` lifts the default packet cap.

Rate suffixes are decimal SI, not powers of two: `k` is 1,000, `M` is 1,000,000, `G` is 1,000,000,000. Units are optional and flexible: `1M`, `1Mpps`, `100Mbit/s`, `2.5Gbps` all parse. "Unlimited" can be written as `0`, `unlimited`, `none`, `line-rate`, `max` or `off`.

## Receiving

| Flag                | Default | Description                                                                                          |
| ------------------- | ------- | ---------------------------------------------------------------------------------------------------- |
| `--rx-mode`         | `none`  | What to receive: `none`, `generated-flow`, `udp-port`, `tcp-port`, `cidr`, `keep-management`, `all`. |
| `--rx-port`         |         | Destination port(s) for `udp-port`/`tcp-port`. Repeatable or comma-separated.                        |
| `--rx-cidr`         |         | Source CIDR for `--rx-mode cidr`.                                                                    |
| `--allow-match-all` | `false` | Required acknowledgement for `--rx-mode all`, which takes **every** packet from the kernel.          |

See [transmit and receive](/concepts/receive) before using anything but `none`.

## PCAP replay

| Flag            | Default | Description                                                               |
| --------------- | ------- | ------------------------------------------------------------------------- |
| `--pcap`        |         | Ethernet PCAP/PCAPNG file to replay. Implies `--mode pcap`.               |
| `--pcap-timing` | `rate`  | `rate` uses `--pps`/`--bps`; `original` preserves the capture's own gaps. |
| `--pcap-loop`   | `true`  | Loop the capture until the duration expires.                              |

## Interface and behaviour

| Flag              | Default | Description                                                                 |
| ----------------- | ------- | --------------------------------------------------------------------------- |
| `--no-tui`        | `false` | Skip the wizard and dashboard. Validate, run, print statistics.             |
| `--start`         | `false` | Skip the wizard, but keep the live dashboard.                               |
| `-y`, `--yes`     | `false` | Skip ordinary confirmations. **Does not** bypass the `--rx-mode all` guard. |
| `--forget`        | `false` | Discard remembered settings and start from defaults.                        |
| `-h`, `--help`    |         | Show the flag list.                                                         |
| `-v`, `--version` |         | Print the version.                                                          |

## Notes worth knowing

<AccordionGroup>
  <Accordion title="--packet-size includes the FCS">
    `--packet-size 64` is the classic 64-byte frame. Wireblast writes 60 bytes and the NIC appends the 4-byte FCS. This is the single definition that trips people up most.
  </Accordion>

  <Accordion title="--bps is L1">
    L1 is the frame plus its 20 bytes of preamble, start-frame delimiter and interframe gap. So `--bps 10G` means 10G line rate. See [reading the numbers](/concepts/numbers).
  </Accordion>

  <Accordion title="Rates are aggregate">
    `--pps 1M` is a million packets per second in total, not per queue. Measured across 1, 4 and 12 queues on the same NIC: 999.34, 999.35, 999.44 kpps.
  </Accordion>

  <Accordion title="Flags beat remembered settings">
    In the TUI, saved settings prefill the wizard, but any flag you actually pass wins. A value that merely equals its default doesn't count as a choice, only flags you typed. `--no-tui` ignores saved settings entirely.
  </Accordion>

  <Accordion title="--start does not skip safety confirmations">
    It skips the wizard and the review screen. Anything needing a typed `yes` still stops and asks.
  </Accordion>
</AccordionGroup>

## Examples

```bash theme={null}
# The wizard
sudo wireblast

# A million 64-byte packets a second for a minute
sudo wireblast -i eno2 --dst-ip 192.0.2.10 --pps 1M -d 60s

# 10G line rate, IMIX, ten thousand flows
sudo wireblast -i eno2 --dst-ip 192.0.2.10 --mode imix \
  --flows 10000 --bps 10G -d 60s

# Tagged, scripted, unattended
sudo wireblast --no-tui -i eno2 --vlan 100 --dst-ip 192.168.0.2 \
  --dst-mac 3c:ec:ef:b4:c2:dc --packet-size 512 --pps 200k -d 30s -y

# A receiver
sudo wireblast -i eno2 --mode receive --rx-mode udp-port --rx-port 9000 -d 60s

# Replay a capture at its original timing, once
sudo wireblast -i eno2 --pcap capture.pcap \
  --pcap-timing original --pcap-loop=false
```

Runnable versions of most of these are in the [examples directory](https://github.com/atoonk/wireblast/tree/main/examples).
