---
name: "ifupdown-executor"
section: "7"
platform: "linux"
package: "ifupdown-ng"
version: "0.12.1-7"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ifupdown-executor"
---

# ifupdown-executor(7)

ifupdown executor protocol

## NAME

**/usr/libexec/ifupdown-ng/program** - ifupdown executor protocol

## DESCRIPTION

The ifupdown executors are programs that are typically installed into the ifupdown-ng executor path.  They follow a specific protocol documented in this man page.

## PHASES

Executors are run to react to nine different phases and are not required to take any specific action.  These phases are:

**depend**

Called to determine if the executor wishes to change the dependency graph.  The executor should write a space-delimited list of interface names it is dependent upon to *stdout*.  Those interface names will be merged into the dependency graph.  If an executor does not have any dependencies, it may simply exit 0 without doing anything.

**create**

Called before **pre-up**, to explicitly allow for interface creation if necessary.

**pre-up**

Called before the interface is going to be brought up.

**up**

Called when the interface is being brought up.

**post-up**

Called after the interface was successfully brought up.

**pre-down**

Called before the interface is going to be taken down.

**down**

Called when the interface is being taken down.

**post-down**

Called after the interface was successfully taken down.

**destroy**

Called after **post-down** to allow for explicitly destroying an interface if necessary.

## ENVIRONMENT

Executors are guaranteed to run with a core set of environment variables:

**IFACE**

The name of the interface being configured.

**INTERFACES\_FILE**

The path to the interfaces database file being used.

**MODE**

Either *start*, *stop* or *depend* depending on phase. This environment variable is present for compatibility with legacy ifupdown scripts and should not be used in ifupdown-ng executors.

**PHASE**

The phase being executed.  See the phases section for more information about phases.

**VERBOSE**

If present, verbose output is expected from the executor.

Additionally, the properties associated with an interface are provided to executors.  The keys are rewritten to begin with IF\_ and are capitalized with dashes converted to underscores. For example, the property *bridge-ports* will be rewritten as *IF\_BRIDGE\_PORTS*.

## SEE ALSO

[ifup(8)](/ifup/8.md)\
 [ifdown(8)](/ifdown/8.md)\
 [interfaces(5)](/interfaces/5.md)

## AUTHORS

Ariadne Conill \<ariadne@dereferenced.org\>
