---
name: "valectl"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/valectl"
---

# valectl(8)

manage VALE network switches provided by netmap

## NAME

**valectl** – manage VALE network switches provided by netmap

## SYNOPSIS

- **valectl**

  \[**-g** *valeSSS:PPP*\] \[**-a** *valeSSS:interface*\] \[**-h** *valeSSS:interface*\] \[**-d** *valeSSS:interface*\] \[**-n** *interface*\] \[**-r** *interface*\] \[**-l** *valeSSS:PPP*\] \[**-l**\] \[**-p** *valeSSS:PPP*\] \[**-P** *valeSSS:PPP*\] \[**-C** *spec*\] \[**-m** *memid*\]

## DESCRIPTION

**valectl** manages and inspects [vale(4)](/vale/4.md) network switches, for instance attaching and detaching interfaces, creating and deleting persistent VALE ports, or listing the existing switches and their ports. In the following, *valeSSS* is the name of a VALE switch, while *valeSSS:PPP* is the name of a VALE port of *valeSSS*.

When issued without options it lists all the existing switch ports together with their internal bridge number and port number.

- **-g** *valeSSS:PPP*

  Print the number of receive rings of *valeSSS:PPP*.

- **-a** *valeSSS:interface*

  Attach *interface* (which must be an existing network interface) to *valeSSS* and detach it from the host stack.

- **-h** *valeSSS:interface*

  Attach *interface* (which must be an existing network interface) to *valeSSS* while keeping it attached to the host stack. More precisely, packets coming from the host stack and directed to the interface will go through the switch, where they can still reach the interface if the switch rules allow it. Conversely, packets coming from the interface will go through the switch and, if appropriate, will reach the host stack.

- **-d** *valeSSS:interface*

  Detach *interface* from *valeSSS*.

- **-n** *interface*

  Create a new persistent VALE port with name *interface*. The name must be different from any other network interface already present in the system.

- **-r** *interface*

  Destroy the persistent VALE port with name *interface*.

- **-l** *valeSSS:PPP*

  Show the internal bridge number and port number of the given switch port.

- **-p** *valeSSS:PPP*

  Enable polling mode for *valeSSS:PPP*. In polling mode, a dedicated kernel thread is spawned to handle packets received from *valeSSS:PPP* and push them into the switch. The kernel thread busy waits on the switch port rather than relying on interrupts or notifications. Polling mode can only be used on physical NICs attached to a VALE switch.

- **-P** *valeSSS:PPP*

  Disable polling mode for *valeSSS:PPP*.

- **-C** *x* \| *x,y* \| *x,y,z* \| *x,y,z,w*

  When used in conjunction with **-n** it supplies the number of tx and rx rings and slots. The full format with four numbers gives, in order, number of tx slots, number of rx slots, number of tx rings and number of rx rings. The form with three numbers uses *z* for both the number of tx and the number of rx rings. The forms with less than two numbers use the default values for the number of rings. The form with two numbers supplies the numbers of tx and rx slots. The form with only one number uses *x* for both the number of tx and the number of rx slots.

  When used in conjunction with **-p** only the first three forms are used. The first number may be either 0 or 1. If 0, then all interface rings will be polled by a single thread, running on the core id given by the second number (the third number, if present, must be 1). If the first number is 1, then the ring identified by the second number will be polled by the core with the same id. If a third number is given, then this is repeated for as many consecutive rings and cores.

- **-m** *memid*

  Used in conjunction with **-n** supplies the netmap memory region identifier to use together with the newly created persistent VALE port. These ports use a private memory region by default. Using this option you can let them share memory with other ports. Pass 1 as *memid* to use the global memory region already shared by all hardware netmap ports.

## SEE ALSO

[netmap(4)](/netmap/4.md), [vale(4)](/vale/4.md)

## AUTHORS

**valectl** has been written by Michio Honda at NetApp.
