Files
ferrix/docs/content/docs/reference/command-line.md
T
Rayhaan JaufeerallyandClaude Fable 5.1 175a13d506 Hygiene: scripts, CI, docs and manifests
- scripts/in-namespace.sh set CARGO_TARGET_DIR to the empty string when
  it was unset, which cargo refuses, and dropped RUSTFLAGS, so the run
  in the namespace rebuilt what kernel-tests.sh had just built. Each is
  passed on only where set.
- The README's list of unsupported features still had route reflection
  and graceful restart, both of which exist; the command-line reference
  lacked SIGUSR1 and exit status 75; the HTTP API reference did not say
  what errors look like.
- The event stream said "missed 0 events" for the best-routes stream,
  which does not count what it missed; it leaves the count out now.
- CI lints bgp-bench with its count-memory feature, which nothing built.
- bgp-bench had two unused dev-dependencies; bgp-integration-tests had
  three dependencies that only its tests and examples use.
- install.sh updates apt before installing; two-routers.sh loses an
  unused variable; small things in the web crate.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-06 11:15:58 +02:00

83 lines
3.0 KiB
Markdown

+++
title = "Command-Line Reference"
description = "Describes the syntax, options, environment variables, and signals of the bgp command."
weight = 2
[extra]
nav = "Command Line"
+++
## Syntax
```
bgp [OPTIONS] <CONFIG>
```
## Description
Starts the Ferrix BGP daemon with the specified configuration file, or
validates the file.
## Options
| Option | Description |
|---|---|
| `<CONFIG>` | Path to the configuration file. See [Configuration Reference](@/docs/reference/configuration.md). |
| `--check` | Validates the configuration file and exits. The daemon does not listen on any port and does not modify any route. |
| `-l`, `--level <LEVEL>` | Specifies the minimum log level for the daemon's messages: `error`, `warn`, `info`, `debug`, or `trace`. Default: `info`. At `debug` and lower, the daemon logs every UPDATE message and every advertised route. |
| `-V`, `--version` | Displays the version and exits. |
| `-h`, `--help` | Displays help and exits. |
## Exit Status
| Status | Meaning |
|---|---|
| 0 | With `--check`: the configuration is valid. Otherwise: the daemon stopped in response to `SIGTERM` or `SIGINT`. |
| 1 | The configuration is invalid, or the daemon failed. The error is written to standard error. |
| 75 | The daemon exited in response to `SIGUSR1`, to be started again. The systemd unit restarts it on this status (`RestartForceExitStatus=75`). See [Upgrading Ferrix](@/docs/operations/deployment.md#upgrading-ferrix). |
## Environment Variables
| Variable | Description |
|---|---|
| `RUST_LOG` | Specifies the log level for components other than the daemon's own crates, for example `RUST_LOG=axum=debug` for the HTTP server. |
## Signals
| Signal | Action |
|---|---|
| `SIGTERM`, `SIGINT` | Sends a Cease NOTIFICATION message with the subcode Administrative Shutdown to every neighbor, removes the daemon's routes from the kernel, and exits with status 0. |
| `SIGUSR1` | Starts a graceful restart (RFC 4724): neighbors on which graceful restart is in use retain the routes of Ferrix for the restart time, other neighbors receive a Cease NOTIFICATION message with the subcode Administrative Shutdown, the routes stay in the kernel, and the daemon exits with status 75. See [Upgrading Ferrix](@/docs/operations/deployment.md#upgrading-ferrix). |
Ferrix does not reload its configuration while it runs. To apply a new
configuration, restart the daemon. See
[Changing the Configuration](@/docs/operations/deployment.md#changing-the-configuration).
## Examples
To validate a configuration file:
```bash
bgp --check /etc/ferrix/server.textpb
```
```
/etc/ferrix/server.textpb is in order: AS64500, peers: 3, routes originated: 2
```
If the file is invalid, the command displays the error and exits with
status 1:
```
Error: Invalid configuration
Caused by:
peer "x": endpoint is invalid: fe80::1 is a link-local address, which needs the interface it is on: fe80::1%eth0, for example
```
To start the daemon with debug logging:
```bash
bgp /etc/ferrix/server.textpb --level debug
```